带自动换行的多行标签
Multiple Line Label with word wrapping
这看起来很直观,但我一直在尝试让文本停止离开屏幕 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
}
我附上了问题的屏幕截图以及标签的设置。
我发现使用约束来设置布局比手动调整框架要容易得多...
但是,如果您出于某种原因想要手动设置标签的框架,我建议您做两件事:
就像@rmaddy 提到的那样,viewDidLoad
在视图控制器生命周期中还为时过早,框架是正确的。尝试覆盖 layoutSubviews
并将框架调整移动到该方法中。
对于 numberOfLines 设置为 0 的 UILabel,您还需要设置标签 preferredmaxlayoutwidth
属性 以帮助它确定需要多少行(如果使用约束则不需要)。
此外,如果您愿意定位 iOS9 及以上,UIStackView
是 UIKit 的一个很好的补充,可以帮助实现这种布局,其中子视图从可能增加的高度向下推multi-line 个标签。
下面是添加堆栈视图以容纳 2 个 UILabel 的一些屏幕截图,然后是将堆栈视图的左、上和右边缘固定到超级视图的约束:
通过故事板中定义的布局,您的 viewDidLoad
变得简单多了,只需设置标签的实际内容:
override func viewDidLoad() {
super.viewDidLoad()
self.orgTitle.text = self.oTitle
self.orgDesc.text = self.desc
self.orgImage.image = self.image
}
这看起来很直观,但我一直在尝试让文本停止离开屏幕 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
}
我附上了问题的屏幕截图以及标签的设置。
我发现使用约束来设置布局比手动调整框架要容易得多...
但是,如果您出于某种原因想要手动设置标签的框架,我建议您做两件事:
就像@rmaddy 提到的那样,
viewDidLoad
在视图控制器生命周期中还为时过早,框架是正确的。尝试覆盖layoutSubviews
并将框架调整移动到该方法中。对于 numberOfLines 设置为 0 的 UILabel,您还需要设置标签
preferredmaxlayoutwidth
属性 以帮助它确定需要多少行(如果使用约束则不需要)。
此外,如果您愿意定位 iOS9 及以上,UIStackView
是 UIKit 的一个很好的补充,可以帮助实现这种布局,其中子视图从可能增加的高度向下推multi-line 个标签。
下面是添加堆栈视图以容纳 2 个 UILabel 的一些屏幕截图,然后是将堆栈视图的左、上和右边缘固定到超级视图的约束:
通过故事板中定义的布局,您的 viewDidLoad
变得简单多了,只需设置标签的实际内容:
override func viewDidLoad() {
super.viewDidLoad()
self.orgTitle.text = self.oTitle
self.orgDesc.text = self.desc
self.orgImage.image = self.image
}