在活动中重新设计整个App UI - 最佳方法是什么?

时间:2014-11-19 12:05:53

标签: ios objective-c iphone

这主要是一个模式/设计问题,具有以下设置:

我的应用程序在白天/晚上具有不同的样式,其中包括:

  • 背景图片
  • 字体大小和颜色
  • ui元素定位
  • 按钮图片
  • 等...

尽可能使用UIAppearance Proxy Protocol,以及故事板。 然而,大部分样式都是在特定的Views viewDidLoad方法中完成的,这些方法也必须更新。

问题:

当应用程序在从白天切换到晚上的过程中处于活动状态时,反之亦然,所有新创建的UI元素都会根据新设置进行样式设置,如前所述,但在先前设置中已存在的元素仍未设置样式。如何在所有UI元素上触发restyle?

思路:

  • 我可以以某种方式触发完整的UI重绘吗? (包括调用每个视图viewDidLoad?)
  • 我是否必须将所有样式从viewDidLoad方法移到layoutSubviews并调用layoutIfNeeded?
  • 还有更方便的方法吗?

1 个答案:

答案 0 :(得分:0)

快速谷歌搜索并找到了这个:

// Update UIAppearance...

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

......来自 http://snipplr.com/view/75259/refresh-uiappearance-after-application-loaded/

它可以非常有效地重新加载整个视图层次结构。你需要把它放在某个特定时间间隔触发的地方。

希望它适合你=]