此属性仅适用于 iOS 10+操作系统什么是替换属性的替代解决方案。
Apple documentation for Objective C
@property(nonatomic) BOOL adjustsFontForContentSizeCategory;
var adjustsFontForContentSizeCategory: Bool { get set }
当我们在较低版本的应用程序中打开崩溃时,此属性在较低版本中不起作用。
答案 0 :(得分:2)
在Swift 3中,在10之前的iOS版本中,为了在用户更改其首选字体大小时更新字体,我们必须执行以下操作:
class ViewController: UIViewController {
@IBOutlet weak var dynamicTextLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
dynamicTextLabel.font = .preferredFont(forTextStyle: .body)
NotificationCenter.default.addObserver(forName: .UIContentSizeCategoryDidChange, object: nil, queue: .main) { [weak self] notification in
self?.dynamicTextLabel.font = .preferredFont(forTextStyle: .body)
}
}
deinit {
NotificationCenter.default.removeObserver(self, name: .UIContentSizeCategoryDidChange, object: nil)
}
}
答案 1 :(得分:2)
在较低版本中没有已定义的属性,您必须以编程方式处理它,您必须收听字体更改的系统通知 - UIContentSizeCategoryDidChangeNotification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didChangePreferredContentSize:)
name:UIContentSizeCategoryDidChangeNotification
object:nil];
Swift版
NotificationCenter.default.addObserver(self, selector:
#selector(self.didChangePreferredContentSize), name:
UIContentSizeCategoryDidChangeNotification, object: nil)
然后您可以在选择器方法中处理您的需求 - didChangePreferredContentSize。
最佳实践指南 - 离开视图控制器后,请务必删除观察者。