繁体   English   中英

iOS 9中UILabel中的多行文本

[英]Multiple lines of text in UILabel in iOS 9

我正在开发iOS项目但是当我更新到iOS 9时,我在UILabels中遇到了多线问题。 我正在使用Autolayout

有谁知道如何在iOS 9中做到这一点?

我尝试了不同的方法,例如:

textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 0;

(来自其他类似问题)但它没有用。

这是我显示多行的逻辑:

IB配置:

preferedMaxLayout

在此输入图像描述

标签配置

我以编程方式更新此值:

- (void)configureLabelsMaxLayoutWidth
{
     [self.view layoutIfNeeded];
     self.titleLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.titleLabel.frame);
}

我在viewWillAppear上调用此方法

通过将numberOfLines设置为0您将告诉标签为多行,但可能还有其他因素会禁用多行。 你在使用autolayout吗? 如果是这样,该问题可能是标签Content Compression Resistance Priority太低,尝试将其设置为Required1000

内容压缩阻力告诉视图引擎您的标签可以缩小的优先级。 将其设置为必需会强制它不缩小。

在Interface Builder中,只需选择标签,点击Size Inspector (小标尺),然后将其更改为1000。
在此输入图像描述

或者,在代码中,等价物将是:

[label setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];

设置约束后,请记住preferredMaxLayoutWidth

label.numberOfLines = 0
label.preferredMaxLayoutWidth = superview.bounds.size.width - 20

我有类似的问题,我需要在最后调用layoutIfNeeded():

textLabel.text = "your loooooooong text"
textLabel.lineBreakMode = .ByWordWrapping
textLabel.numberOfLines = 0
textLabel.layoutIfNeeded()

(Swift 4,xCode 9.3.1)我知道这不适用于所有跨越这个答案的人,但希望它可以帮助某人。 我的情况是我有一个绑定到superview的UIScrollView。 我想在ScrollView中添加一个带有大量文本的UILabel,宽度相等,所以它只能垂直滚动。 基本上我想要一个垂直滚动的UILabel绑定到superview。 我遇到了一个问题,即即使将numberOfLines设置为零,UILabel仍保持一条线。

这是我用来完成这项工作的ViewController中的代码。

class DetailsController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView! {
    didSet {
        scrollView.delegate = self
        scrollView.addSubview(detailsLabel)
    }
}

var detailsLabel = UILabel()

let detailsText = "Insert lots of text here"

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    detailsLabel.numberOfLines = 0
    detailsLabel.text = detailsText + detailsText
    detailsLabel.frame.size.width = (scrollView?.frame.size.width)!
    detailsLabel.sizeToFit()
    scrollView?.contentSize = detailsLabel.frame.size
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM