我目前正在UILabel
创建扩展程序,以便于观察动态类型。收到UIContentSizeCategoryDidChangeNotification
后,我希望我的选择器可以使用
self.font = UIFont.preferredFontForTextStyle(someUIFontTextStyle)
其中someUIFontTextStyle
使用当前展示的标签UIFontTextStyle
。我曾希望可以通过类似self.font.fontDescriptor.textStyle
之类的东西访问这样的属性,但事实似乎有点复杂。
有没有办法访问与UIFontTextStyle
相关联的UILabel
属性?
self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String
答案 0 :(得分:2)
正如您发现的那样Andy mentioned,您可以从其字体描述符中获取字体的文本样式:
self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String
答案 1 :(得分:1)
接受的答案不适合swift 3. UIContentSizeCategoryDidChangeNotification 的处理程序需要执行以下操作:
if let font = myUILable.font.fontDescriptor.object(forKey: UIFontDescriptorTextStyleAttribute) as? UIFontTextStyle {
myUILabel.font = UIFont.preferredFont(forTextStyle: font)
}