如何更改UIWindow window.tintColor后更改为默认值?

时间:2016-03-09 22:46:38

标签: ios uicolor uiapplication

我正在执行以下代码,以便根据按钮颜色对我的应用进行系统范围的主题更改:

UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject];
window.tintColor = [UIColor themeColorNamed:@"barAndButtonTextColor"];

问题是,如何将其恢复为默认颜色?我没有运气试过这个:

window.tintColor = nil;

当我在应用程序最初加载并存储时尝试获取默认的UIColor时,它会在我的AppDelegate中以nil的形式返回:

UIColor *myColor = window.tintColor;

关于如何解决这个问题的任何想法?我不想对颜色进行硬编码,因为谁知道未来的iOS版本会发生什么变化。

2 个答案:

答案 0 :(得分:3)

将其设置为nil是恢复默认值的正确方法。

当您尝试恢复默认色调时,我猜测lastWindow不再是同一个窗口。由于其他原因,系统可能添加了窗口。

我没有在lastObject数组中使用windows,而是使用keyWindow来设置它:

UIWindow *window = [UIApplication sharedApplication].keyWindow;

答案 1 :(得分:3)

您可以尝试

window.tintColor = [[UIView new] tintColor];

当我初始化窗口时,我在application:didFinishLaunchingWithOptions:内执行此操作,因为无论出于何种原因,窗口的色调颜色默认为nil

不知怎的,尽管是零,我从来没有遇到过问题,但我已经让我的应用程序的用户发送警报控制器和动作表的屏幕截图,其中按钮文本是不可见的,我很确定它必须与窗口的色调颜色为零。