gpt4 book ai didi

ios - 更改 UIAppearence 后刷新标签栏

转载 作者:行者123 更新时间:2023-12-01 17:42:42 28 4
gpt4 key购买 nike

我有一个想法,我想尝试实现:

基本上,我希望能够轻松区分已登录和未登录我的应用程序。我的想法是,当用户未登录时,应用程序将在 UIAppearence 代理中设置背景颜色等。登录后,这些值将通过更改 UIAppearence 设置来更改。

我发现这种方法可行,但并非所有 UI 元素都会在更改 UIAppearence 后刷新。最突出的例子是我的 UITabBarController 中的标签栏(它是我窗口的 rootViewController)。

在寻找这个问题的解决方案时,我发现了一些建议 layoutSubviewsdrawRect需要调用以使 View 刷新并采用对 UIAppearence 的更改。但是,在我的应用程序委托(delegate)中,我尝试了以下所有方法但均未成功:

[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]

有人对我如何强制重绘标签栏(和其他 View )有任何技巧或见解吗?我在想我只想给 layoutSubviews 打个电话一直到 UIView 层次结构,但如果是这样,我还没有找到一种方法来做到这一点。

最佳答案

UIAppearance 属性在 View 添加到 View 层次结构后设置。
再次触发它的最简单技巧是分离关键窗口的 rootViewController,然后再次附加它。您还可以删除关键窗口的 subview 并再次添加它们。

关于ios - 更改 UIAppearence 后刷新标签栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350027/

28 4 0