我有一个想法,我想尝试实现:
基本上,我希望能够轻松区分已登录和未登录我的应用程序。我的想法是,当用户未登录时,应用程序将在 UIAppearence 代理中设置背景颜色等。登录后,这些值将通过更改 UIAppearence 设置来更改。
我发现这种方法可行,但并非所有 UI 元素都会在更改 UIAppearence 后刷新。最突出的例子是我的 UITabBarController 中的标签栏(它是我窗口的 rootViewController)。
在寻找此问题的解决方案时,我发现了一些建议layoutSubviews
或drawRect
需要调用以使视图刷新并采用对 UIAppearence 的更改。但是,在我的应用程序委托中,我尝试了以下所有方法但均未成功:
[self.window.rootViewController.view setNeedsLayout]
[self.window.rootViewController.view setNeedsDisplay]
[self.tabbarController.tabBar setNeedsLayout]
[self.tabbarController.tabBar setNeedsDisplay]
[self.tabbarController.view setNeedsLayout]
[self.tabbarController.view setNeedsDisplay]
有人对我如何强制重绘标签栏(和其他视图)有任何技巧或见解吗?我在想我只想将调用一直发送到layoutSubviews
UIView 层次结构,但如果是这样,我还没有找到一种方法来做到这一点。