簡體   English   中英

NSLayoutConstraint - 兩項,一行,間距優先

[英]NSLayoutConstraint - Two items, one line, spacing priority

我在一行上有兩個標簽。 我需要第二個 label 正好位於第一個 label 的末尾,但我需要確保第二個 label 永遠不會越過屏幕邊緣。

因此,我將 label1 的左錨點對齊到容器視圖的左側,並將 label2 的左錨點限制在 label1 的右側,並將 label2 的右錨點限制在容器的右側。

我希望 label1 只占用它需要的空間,而 label2 占用空間的 rest。 我所擁有的恰恰相反。

在此處輸入圖像描述

所以我需要與我在這里所擁有的完全相反的東西。 我怎樣才能做到這一點?

給左邊的 label 更高的內容擁抱優先級應該可以解決問題。

// In code
leftLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)

左標簽內容擁抱優先級

為了進一步閱讀該主題,我發現非常有幫助

游樂場示例

//: A UIKit based Playground for presenting user interface
  
import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    
    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white

        let leftLabel = UILabel()
        leftLabel.text = "I am left"
        leftLabel.backgroundColor = .orange
        leftLabel.translatesAutoresizingMaskIntoConstraints = false
        
        let rightLabel = UILabel()
        rightLabel.text = "I am right"
        rightLabel.backgroundColor = .yellow
        rightLabel.translatesAutoresizingMaskIntoConstraints = false
        
        view.addSubview(leftLabel)
        view.addSubview(rightLabel)
        
        leftLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16).isActive = true
        leftLabel.trailingAnchor.constraint(equalTo: rightLabel.leadingAnchor).isActive = true
        leftLabel.topAnchor.constraint(equalTo: view.topAnchor, constant: 16).isActive = true
        
        // This is the important part
        leftLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
        
        rightLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16).isActive = true
        rightLabel.topAnchor.constraint(equalTo: leftLabel.topAnchor).isActive = true
        
        self.view = view
    }
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM