【发布时间】:2012-01-26 12:41:55
【问题描述】:
在 Xcode 4 中,如果字体未安装在操作系统中或未出现在 IB 的字体列表中,则无法通过 Interface Builder 设置视图标签的字体系列。
由于某些视图中的所有标签都使用相同的字体,我需要知道是否有一种简单快捷的方法可以将它们全部设置为相同的字体系列,而不是一一设置其系列字体。
【问题讨论】:
标签: ios cocoa-touch uilabel
在 Xcode 4 中,如果字体未安装在操作系统中或未出现在 IB 的字体列表中,则无法通过 Interface Builder 设置视图标签的字体系列。
由于某些视图中的所有标签都使用相同的字体,我需要知道是否有一种简单快捷的方法可以将它们全部设置为相同的字体系列,而不是一一设置其系列字体。
【问题讨论】:
标签: ios cocoa-touch uilabel
您可以使用 IBOutletCollection。在 IB 中创建一个集合并将所有标签连接到它。然后在代码中只使用 setValue forKey。不知道它是否更有效,但您不必遍历子视图。
.h
IBOutletCollection(UILabel) NSArray *labels;
.m
UIFont *newFont = [UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:14];
[labels setValue:newFont forKey:@"font"];
【讨论】:
您可以遍历相关视图的子视图数组属性中的每个条目。对于每一个,检查它是否是UILabel(发送isKindOfClass:[UILabel class])。如果是,您可以将font 属性设置为合适的字体对象。
【讨论】:
appearance 代理,但我找不到任何有据可查的证据表明 UILabel 的字体属性是可代理的外观。我稍后会做一个实验。
UILabel 属性被标记为外观代理系统支持。因此,循环遍历所有内容似乎是您最好的选择。