我有一个UILabel,它是以编程方式创建的,并希望在创建后动态设置它。我可以在init期间自己封装它,但不能随后。更改标题标签文本后,它会保留一行,无论我是否将行数设置为2或0以及是否自动换行。我改变标题后,我希望它占据2行,文本很容易长到足以让它发生,但事实并非如此。
let titleLabel: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
label.backgroundColor = .clear
label.layer.masksToBounds = true
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.textColor = .white
return label
}()
var titleLabelText: String? {
didSet {
titleLabel.text = titleLabelText
titleLabel.layoutIfNeeded()
}
}
然后......
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
titleLabelText = "some string which needs word wrapping"
}
titleLabel.heightAnchor.constraint(equalToConstant: 40.0).isActive = true
titleLabel.widthAnchor.constraint(equalToConstant: screenWidth - 90).isActive = true
字体大小为UIFont(name: "Muli", size: 12)
以下是我在viewDidLoad()
中加载标签的方法,但label.text已应用于viewDidAppear()
let headerStackView: UIStackView = {
let headerArray = [welcomeLabel]
let stackView = UIStackView(arrangedSubviews: headerArray)
答案 0 :(得分:1)
当您将标签设置为显示多行时。请记住您的标签必须具有足够的高度,以使文本显示多行。
尝试增加标签的高度,检查宽度是否正确,然后检查代码。
答案 1 :(得分:0)
如果文字增加会减少字体大小,它会自动在标签中显示完整的文字。
并将标签行空间设置为0并允许自动换行属性为true
答案 2 :(得分:0)
答案 3 :(得分:-2)
AFAIK您需要将其添加为attributedText,然后使用您的字符串和属性创建NSAttributedString。
let paragraphStyleWithWordWrapping = NSMutableParagraphStyle()
paragraphStyleWithWordWrapping.lineBreakMode = .byWordWrapping
let attributedString = NSAttributedString(myString, [NSParagraphStyleAttributeName: paragraphStyleWithWordWrapping])
label.attributedText = attributedString