Table Cells 的 UILabel setFont 外观代理的替代方案
Posted
技术标签:
【中文标题】Table Cells 的 UILabel setFont 外观代理的替代方案【英文标题】:Alternatives to appearance proxy for Table Cells' UILabel setFont 【发布时间】:2012-04-06 09:55:33 【问题描述】:我很高兴能够在我的 ios5 应用程序中使用外观代理来自定义系统范围内的 NavigationController UI 元素,但是:
我的应用中有很多嵌套表格,我希望能够更改所有表格单元格的字体。它们主要是静态创建的。我已经在一个类中生成了一些单元格,从数组中读取,但主要问题在于我在 Interface Builder 中列出的大型内容部分。 IB 似乎没有批量字体设置的选项。
我想知道是否有人可以帮助我找到一种方法来一次性设置所有 UITableCell 字体?
可能是这样的:
[[UILabel appearance] setFont:[UIFont fontWithName:@"Times" size:17.00];
【问题讨论】:
【参考方案1】:您可以使用appearanceWhenContainedIn:
来缩小要为其设置外观的 UIView。
在您的示例中,尝试:
[[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil]
setFont:[UIFont fontWithName:@"Times" size:17.00]];
【讨论】:
非常感谢 - 专注于特定元素的好方法 - 感谢您的反馈! 与一位同事进行了长时间的激烈讨论后,他正确地告诉我 UILabel(在其他对appearanceWhenContainedIn:
做出响应的类中)不符合UIAppearance
协议,所以即使这可能工作它是无证的,因此不值得依赖)。
@NSTJ UILabel
继承自UIView
,符合UIAppearance
;所以UILabel
确实符合UIAppearance
~~,这个方法可以依赖~~。
...但是没有一个方法具有UI_APPEARANCE_SELECTOR
属性,所以可能不是那么可靠/支持。【参考方案2】:
实际上,没有。使用 UIAppearance 来设置 UILabel 的样式是无效的。见my self-answered question here。由于上面列出的原因,它有点工作,但它无效。
【讨论】:
以上是关于Table Cells 的 UILabel setFont 外观代理的替代方案的主要内容,如果未能解决你的问题,请参考以下文章