我正在寻找我的iOS应用程序的主题,并一直在UIAppearance上阅读。我希望用户能够在应用程序中切换一些不同的视觉主题。然后,更改主题将显示在UI中。
我想我可以有一个主题文件,它是appDelegate.m中加载的单例文件。但在那之后,我有点纠结于如何实现这一点?
发布于 2013-06-13 13:54:46
将视图添加到视图层次结构后,UIKit从UIAppearance代理设置属性。
在UISS中,我使用的方法如下:
- (void)reloadAppearance {
NSArray * windows = [UIApplication sharedApplication].windows;
for (UIWindow *window in windows) {
for (UIView *view in window.subviews) {
[view removeFromSuperview];
[window addSubview:view];
}
}
}另一个技巧是从主窗口中删除rootViewController,然后重新添加。虽然我更喜欢第一种解决方案,因为它涵盖了更广泛的情况。
发布于 2016-06-30 16:34:58
这对我在Swift中很有效:
let windows = UIApplication.sharedApplication().windows
for window in windows {
for view in window.subviews {
view.removeFromSuperview()
window.addSubview(view)
}
}发布于 2015-11-23 03:05:07
罗伯特建议的解决方案对我不起作用。我使用的是iOS9和UITabbarController。此建议是answer here中唯一有效的建议
它基本上很好地解释了这个问题,当我们使用UIAppearance时,它基本上是应用的,不会改变,直到视图被重新绘制,这不会发生,特别是像UITabbarControllers这样的rootViewController,新的颜色只有在应用程序从内存中移除并再次打开后才会生效,如果你想立即更改,你将不得不手动设置每个属性,如所附链接中的答案所述
https://stackoverflow.com/questions/17070582
复制相似问题