如何找到 UILabel 的现有 UIFontTextStyle?
How do I find the existing UIFontTextStyle of a UILabel?
我目前正在 UILabel
上创建扩展以方便观察动态类型。收到 UIContentSizeCategoryDidChangeNotification
后,我希望我的选择器使用
设置标签的字体
self.font = UIFont.preferredFontForTextStyle(someUIFontTextStyle)
其中 someUIFontTextStyle
使用与当前展示的标签相同的 UIFontTextStyle
。我曾希望这样的 属性 可以通过类似 self.font.fontDescriptor.textStyle
的方式访问,但事实似乎更令人费解。
有没有办法访问与 UILabel
关联的 UIFontTextStyle
属性?
解决方案
self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String
正如您所发现的 ,您可以从字体描述符中获取字体的文本样式:
self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String
已接受的答案对于 swift 3. UIContentSizeCategoryDidChangeNotification 的处理程序需要执行以下操作:
if let font = myUILable.font.fontDescriptor.object(forKey: UIFontDescriptorTextStyleAttribute) as? UIFontTextStyle {
myUILabel.font = UIFont.preferredFont(forTextStyle: font)
}
我目前正在 UILabel
上创建扩展以方便观察动态类型。收到 UIContentSizeCategoryDidChangeNotification
后,我希望我的选择器使用
self.font = UIFont.preferredFontForTextStyle(someUIFontTextStyle)
其中 someUIFontTextStyle
使用与当前展示的标签相同的 UIFontTextStyle
。我曾希望这样的 属性 可以通过类似 self.font.fontDescriptor.textStyle
的方式访问,但事实似乎更令人费解。
有没有办法访问与 UILabel
关联的 UIFontTextStyle
属性?
解决方案
self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String
正如您所发现的
self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String
已接受的答案对于 swift 3. UIContentSizeCategoryDidChangeNotification 的处理程序需要执行以下操作:
if let font = myUILable.font.fontDescriptor.object(forKey: UIFontDescriptorTextStyleAttribute) as? UIFontTextStyle {
myUILabel.font = UIFont.preferredFont(forTextStyle: font)
}