首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UIAppearance和切换主题

使用UIAppearance和切换主题
EN

Stack Overflow用户
提问于 2013-06-13 00:24:54
回答 4查看 2.5K关注 0票数 5

我正在寻找我的iOS应用程序的主题,并一直在UIAppearance上阅读。我希望用户能够在应用程序中切换一些不同的视觉主题。然后,更改主题将显示在UI中。

我想我可以有一个主题文件,它是appDelegate.m中加载的单例文件。但在那之后,我有点纠结于如何实现这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-13 13:54:46

将视图添加到视图层次结构后,UIKit从UIAppearance代理设置属性。

UISS中,我使用的方法如下:

代码语言:javascript
复制
- (void)reloadAppearance {
    NSArray * windows = [UIApplication sharedApplication].windows;

    for (UIWindow *window in windows) {
        for (UIView *view in window.subviews) {
            [view removeFromSuperview];
            [window addSubview:view];
        }
    }
}

另一个技巧是从主窗口中删除rootViewController,然后重新添加。虽然我更喜欢第一种解决方案,因为它涵盖了更广泛的情况。

票数 13
EN

Stack Overflow用户

发布于 2016-06-30 16:34:58

这对我在Swift中很有效:

代码语言:javascript
复制
let windows = UIApplication.sharedApplication().windows
for window in windows {
    for view in window.subviews {
        view.removeFromSuperview()
        window.addSubview(view)
    }
}
票数 2
EN

Stack Overflow用户

发布于 2015-11-23 03:05:07

罗伯特建议的解决方案对我不起作用。我使用的是iOS9和UITabbarController。此建议是answer here中唯一有效的建议

它基本上很好地解释了这个问题,当我们使用UIAppearance时,它基本上是应用的,不会改变,直到视图被重新绘制,这不会发生,特别是像UITabbarControllers这样的rootViewController,新的颜色只有在应用程序从内存中移除并再次打开后才会生效,如果你想立即更改,你将不得不手动设置每个属性,如所附链接中的答案所述

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17070582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档