这个属性仅适用于iOS 10+操作系统,有没有替代方案来替换这个属性呢?
@property(nonatomic) BOOL adjustsFontForContentSizeCategory;
var adjustsFontForContentSizeCategory: Bool { get set }
当我们在低版本中打开应用时,此属性无法正常工作,导致应用崩溃。
这个属性仅适用于iOS 10+操作系统,有没有替代方案来替换这个属性呢?
@property(nonatomic) BOOL adjustsFontForContentSizeCategory;
var adjustsFontForContentSizeCategory: Bool { get set }
当我们在低版本中打开应用时,此属性无法正常工作,导致应用崩溃。
在低版本中,没有定义的属性,您需要通过编程来处理它,您需要监听系统通知以进行字体更改 - 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 中处理您的需求。
最佳实践指南 - 当您离开您的视图控制器时,请记得删除观察者。
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)
}
}