我已经开始将动态类型和首选字体应用到我的应用中。视图控制器中唯一不符合的部分是一对分段控制器,当标签等都在设置中使用较大的文本滑块进行扩展时,这些控制器会保持顽固的小。
答案 0 :(得分:1)
截至2018年10月,似乎UILabel
是唯一具有adjustsFontForContentSizeCategory
布尔标志形式的内置动态更新行为的类,可访问性是内置的。如果您在true
上将此标志设置为UILabel
,并为标签设置动态字体,则标签将根据当前内容大小设置动态调整其自身(和其自身的框架)的大小。这也适用于UIButton
之类的东西,在内部使用UILabel
来显示文本。
不幸的是,对于UISegmentedControl
之类的控件,似乎没有布尔值标志可以打开或关闭。这是我的实现方式:
在您的viewDidLoad
或awakeFromNib
中,或在设置视图之后,您要注册内容大小更改通知:
NotificationCenter.default.addObserver(self,
selector:#selector(userChangedTextSize(notification:)),
name: UIContentSizeCategory.didChangeNotification,
object: nil)
现在,在userChangedTextSize
方法中,您想要重置分段控件上的字体:
@objc private func userChangedTextSize(notification: Notification) {
// Replace textStyle with whatever textStyle you want for your segmented control
segmentedControl.setTitleTextAttributes([
.font: UIFont.preferredFont(forTextStyle: textStyle)
], for: UIControl.State())
}
答案 1 :(得分:0)
在UIKit 14中,唯一支持“动态类型”功能的组件是
作为UINavigationBar,UIBarButtonItem和UITableViewCell一部分的UILabel也使用开箱即用的动态类型。
仍然缺少该功能的UIKit组件是: