ios - 使用 UIAppearance 和切换主题

标签 ios uiappearance

我正在寻找我的 iOS 应用程序的主题,并且一直在阅读有关 UIAppearance 的内容。我希望用户能够在应用程序内在多个不同的视觉主题之间切换。更改主题将显示在 UI 中。

我想我可以在 appDelegate.m 中加载一个单独加载的主题文件。但在那之后我对如何实现这件事有点困惑?

最佳答案

在将 View 添加到 View 层次结构后,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 并重新添加它。虽然我更喜欢第一种解决方案,因为它涵盖了更广泛的案例。

关于ios - 使用 UIAppearance 和切换主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070582/

相关文章:

ios - UIAppearance 更改 UITableView backgroundView 导致主线程崩溃

ios - UIWebView 未缩放以适应

ios - 当 block 内的 ivar 可能被释放时,管理内存的最佳方法是什么?

ios - 在 Storyboard弹出窗口中放置代表的位置

ios - 在崩溃管理器和 Xcode 7 中强制使用崩溃符号

swift - UICollectionViewCell 中 UILabel 的 UIAppearance - 选定/未选定

ios - swift : println() doesn't show anything into "View Device Logs" in "Devices" tab

ios - 我的应用程序在 ios6 中使用 UIAppearance setTintColor 关闭

android - Widget.Material3 TextAppearance 属性错误

ios - 由于 iOS6 上的全局外观属性,MFMailComposeViewController 崩溃