यदि view.intrinsicContentSize.width != NSViewNoIntrinsicMetric
, तो ऑटो लेआउट एक विशेष प्रकार की बाधा बनाता है NSContentSizeLayoutConstraint
। यह बाधा दो सामान्य बाधाओं की तरह काम करती है:
view.width <= view.intrinsicContentSize.width
क्षैतिज गले लगाने की प्राथमिकता के साथ एक बाधा की आवश्यकता होती है, और
view.width >= view.intrinsicContentSize.width
क्षैतिज संपीड़न प्रतिरोध प्राथमिकता के साथ एक बाधा की आवश्यकता होती है।
स्विफ्ट में, 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>