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 外观代理的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 UILabel 添加到 CollectionViewCells

js 遍历行和列

从表格视图单元格中删除 UIlabel 文本

asp.net table/gridview 合并列

table边框

点击 table 单元格 取值