编译时间之间的 UIAppearance 代理缓存外观?
Posted
技术标签:
【中文标题】编译时间之间的 UIAppearance 代理缓存外观?【英文标题】:UIAppearance proxy caching appearance between compile times? 【发布时间】:2012-03-19 05:57:22 【问题描述】:我正在使用新的 UIAppearance API,并且已经通过我的 AppDelegate 成功地为所有 UINavigationBar 和 UIToolbar 实例设置了色调颜色......
- (void)customizeAppearance
UIColor *tint = [UIColor colorWithRed:212 green:63 blue:69 alpha:1.0];
[[UINavigationBar appearance] setTintColor:tint];
[[UIToolbar appearance] setTintColor:tint];
但是,如果我更改 RGB 值并重新构建/运行,工具栏和导航栏都会变成白色,无论我将其设置为什么颜色!
就好像代理在某处缓存一样。当我删除该应用程序,然后重新安装时,RGB 值会按原样显示,直到我更改它们并再次重建。
有其他人经历过吗?是不是我做错了什么?
更新 1:
现在,我注意到,它会在编译时间之间任意切换到白色背景,甚至无需更改 RGB。 (注意:上面的 RGB 应该返回微红色。)
更新 2:
我亲爱的未婚妻碰巧看着我,注意到在我的测试用例中,问题似乎只发生在我一次在多个 RGB 通道中具有值时。
例如:
UIColor *tint = [UIColor colorWithRed:212 green:0 blue:0 alpha:1.0];
工作,而
UIColor *tint = [UIColor colorWithRed:212 green:63 blue:69 alpha:1.0];
不会。
解决方案?
请改用colorWithHue:saturation:brightness:alpha:
。
【问题讨论】:
【参考方案1】:问题是[UIColor colorWithRed: green: blue: alpha:]
需要一组从0.0f
到1.0f
的浮点数。你传入了一组整数。
【讨论】:
以上是关于编译时间之间的 UIAppearance 代理缓存外观?的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIAppearance 代理设置 UILabel 样式
如何使 UIAppearance 代理适用于以编程方式创建的视图?