我目前正在Swift中构建iOS应用程序,但我遇到了一些问题。我的设置视图是tableviewcontroller。它是一个分组的。我的表视图是动态的,字体是动态的。
我想与设置应用中的字体大小进行交互。
如果我的应用程序已在运行,则字体大小会发生变化,但布局会被破坏。 (从最小字体变为最大字体)
图片:Layout bug
如果我使用新的字体设置重启我的应用程序,则没有问题......
这是一个XCODE project example,你会看到这个错误。
您能帮我找一个解决方案吗?感谢。
答案 0 :(得分:0)
更改字体大小后尝试调用
self.view.setNeedsLayout()
它在UIView中设置了一个标记,标记为需要更改布局。
您也可以尝试拨打
self.view.layoutIfNeeded()
Apple文档说:
使用此方法在绘制前强制子视图的布局。使用以根视图接收消息的视图,此方法从根开始布置视图子树。
希望能帮到你
答案 1 :(得分:0)
UIContentSizeCategoryDidChangeNotification
正是您要找的。 p>
根据文档:
当用户更改首选内容大小设置时发布。
此通知在值中发送 preferredContentSizeCategory属性更改。 userInfo字典 通知包含UIContentSizeCategoryNewValueKey键, 这反映了新的环境。
示例回调实现:
func handleContentSizeCategoryDidChangeNotification(notification: NSNotification) {
self.questionLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
}
答案 2 :(得分:0)