যদি view.intrinsicContentSize.width != NSViewNoIntrinsicMetric
তা হয় তবে অটো লেআউট টাইপের একটি বিশেষ সীমাবদ্ধতা তৈরি করে NSContentSizeLayoutConstraint
। এই সীমাবদ্ধতা দুটি সাধারণ বাধার মতো কাজ করে:
view.width <= view.intrinsicContentSize.width
অনুভূমিক আলিঙ্গন অগ্রাধিকার সহ একটি সীমাবদ্ধতা এবং and
view.width >= view.intrinsicContentSize.width
অনুভূমিক সংক্ষেপণ প্রতিরোধের অগ্রাধিকারের সাথে আবশ্যক একটি সীমাবদ্ধতা ।
আইওএস 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>