簡體   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