如何找到UILabel的现有UIFontTextStyle?

时间:2015-08-31 22:08:50

标签: ios iphone swift uilabel uifontdescriptor

我目前正在UILabel创建扩展程序,以便于观察动态类型。收到UIContentSizeCategoryDidChangeNotification后,我希望我的选择器可以使用

设置标签的字体
self.font = UIFont.preferredFontForTextStyle(someUIFontTextStyle)

其中someUIFontTextStyle使用当前展示的标签UIFontTextStyle。我曾希望可以通过类似self.font.fontDescriptor.textStyle之类的东西访问这样的属性,但事实似乎有点复杂。

有没有办法访问与UIFontTextStyle相关联的UILabel属性?

解决方案

self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String

2 个答案:

答案 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)
}