这看起来很直观,但我一直试图让文字停止离开屏幕45分钟。这是我的viewDidLoad()
:
override func viewDidLoad() {
super.viewDidLoad()
orgTitle.numberOfLines = 0
orgTitle.lineBreakMode = .byWordWrapping
orgTitle.frame.size.width = self.view.frame.size.width - 20
orgTitle.sizeToFit()
orgDesc.numberOfLines = 0
orgDesc.lineBreakMode = .byWordWrapping
orgDesc.frame.size.width = self.view.frame.size.width - 20
orgDesc.sizeToFit()
self.orgTitle.text = self.oTitle
self.orgDesc.text = self.desc
self.orgImage.image = self.image
}
答案 0 :(得分:2)
我发现使用约束来设置布局比使用手动调整框架要容易得多......
但是,无论出于何种原因,如果您想手动设置标签的框架,我建议两件事:
就像@rmaddy提到的那样,viewDidLoad
在视图控制器生命周期中太早,框架才是正确的。尝试覆盖layoutSubviews
并将框架调整移动到该方法中。
对于numberOfLines设置为0的UILabel,您还需要设置标签preferredmaxlayoutwidth
属性以帮助它确定需要多少行(如果使用约束则不需要)。
此外,如果您愿意以iOS9及更高版本为目标,UIStackView
是UIKit非常好的补充,以帮助实现这种布局,其中子视图可以从多线标签的潜在增加高度下推。 / p>
这里有一些屏幕抓取添加堆栈视图来保存2个UILabel,然后将stackview的左,上,右边缘固定到superview上的约束:
通过故事板中定义的布局,只需设置标签的实际内容,viewDidLoad
变得更加简单:
override func viewDidLoad() {
super.viewDidLoad()
self.orgTitle.text = self.oTitle
self.orgDesc.text = self.desc
self.orgImage.image = self.image
}