ถ้าหากview.intrinsicContentSize.width != NSViewNoIntrinsicMetric
เลย์เอาต์อัตโนมัติสร้างข้อ จำกัด ชนิดNSContentSizeLayoutConstraint
พิเศษ ข้อ จำกัด นี้ทำหน้าที่เหมือนข้อ จำกัด ปกติสองข้อ:
- ข้อ จำกัด ที่ต้องใช้
view.width <= view.intrinsicContentSize.width
กับลำดับความสำคัญของการกอดในแนวนอนและ
- ข้อ จำกัด ที่ต้องการ
view.width >= view.intrinsicContentSize.width
โดยมีลำดับความสำคัญการต้านทานการบีบอัดในแนวนอน
ใน Swift ด้วยจุดยึดรูปแบบใหม่ของ iOS 9 คุณสามารถตั้งค่าข้อ จำกัด ที่เทียบเท่าได้ดังนี้:
let horizontalHugging = view.widthAnchor.constraint(
lessThanOrEqualToConstant: view.intrinsicContentSize.width)
horizontalHugging.priority = view.contentHuggingPriority(for: .horizontal)
let horizontalCompression = view.widthAnchor.constraint(
greaterThanOrEqualToConstant: view.intrinsicContentSize.width)
horizontalCompression.priority = view.contentCompressionResistancePriority(for: .horizontal)
ในทำนองเดียวกันถ้าview.intrinsicContentSize.height != NSViewNoIntrinsicMetric
เลย์เอาต์อัตโนมัติสร้างสิ่งNSContentSizeLayoutConstraint
ที่ทำหน้าที่เหมือนข้อ จำกัด สองข้อต่อความสูงของมุมมอง ในรหัสพวกเขาจะมีลักษณะเช่นนี้:
let verticalHugging = view.heightAnchor.constraint(
lessThanOrEqualToConstant: view.intrinsicContentSize.height)
verticalHugging.priority = view.contentHuggingPriority(for: .vertical)
let verticalCompression = view.heightAnchor.constraint(
greaterThanOrEqualToConstant: view.intrinsicContentSize.height)
verticalCompression.priority = view.contentCompressionResistancePriority(for: .vertical)
คุณสามารถดูNSContentSizeLayoutConstraint
อินสแตนซ์พิเศษเหล่านี้(ถ้ามี) โดยการพิมพ์view.constraints
หลังจากโครงร่างทำงาน ตัวอย่าง:
label.constraints.forEach { print($0) }
// Output:
<NSContentSizeLayoutConstraint:0x7fd82982af90 H:[UILabel:0x7fd82980e5e0'Hello'(39)] Hug:250 CompressionResistance:750>
<NSContentSizeLayoutConstraint:0x7fd82982b4f0 V:[UILabel:0x7fd82980e5e0'Hello'(21)] Hug:250 CompressionResistance:750>