【发布时间】:2018-08-16 16:46:06
【问题描述】:
我正在使用AutoLayout。我有一个 %10 宽度和 200 固定高度的视图。我在该视图中放置了一个UILabel,边距为0。然后我正在旋转UILabel,更改内容并调用sizeToFit() 函数。在控制器加载时,旋转有效,但内容被截断。在控制器上单击按钮后,UILabel 正在放大并且内容正在调整。
我应该怎么做才能避免这个问题?
注意:我通过调试检查了标签框架的宽度和高度。在sizeToFit() 之后,框架的宽度和高度会按预期发生变化。但是,UI 并不令人耳目一新。我也尝试了label.setNeedsLayout() 和label.layoutIfNeeded(),但没有任何改变。
对于旋转,我使用以下扩展:
extension UILabel {
@IBInspectable
var rotation: Int {
get {
return 0
} set {
let radians = CGFloat(CGFloat(Double.pi) * CGFloat(newValue) / CGFloat(180.0))
self.transform = CGAffineTransform(rotationAngle: radians)
}
}
}
【问题讨论】:
-
调用sizeToFit后,尝试设置label.frame.size = CGSize(width: max(label.frame.size.width, label.frame.size.height), height: max(label.frame .size.width, label.frame.size.height))
-
它没有用。 UI 没有再次刷新。
标签: swift rotation uilabel sizetofit