কোকো অটোলেআউট: সামগ্রী জড়িয়ে বনাম সামগ্রী সংক্ষেপণ প্রতিরোধের অগ্রাধিকার


643

বিষয়বস্তু আলিঙ্গন এবং সংকোচন প্রতিরোধের মধ্যে পার্থক্য সম্পর্কে কোকো অটোলেআউট সম্পর্কিত অ্যাপল ডকুমেন্টেশনে আমি স্পষ্ট উত্তর খুঁজে পাই না।

কেউ তাদের ব্যবহার এবং পার্থক্য ব্যাখ্যা করতে পারেন?


49
জীবনের অন্যতম রহস্যময় কারণ তারা এটিকে কেবল "সম্প্রসারণ প্রতিরোধ" বলে না কেন। দুটি বৈশিষ্ট্য "সম্প্রসারণ প্রতিরোধ" এবং "সংক্ষেপণ প্রতিরোধ" ছাড়া আর কিছুই নয় । "আলিঙ্গন" পরিভাষাটি উন্মাদ।
ফ্যাটি

3
তাহলে তোমরা কি তবুও খুব বেশী রুম আছে content-hugging: সাদা স্থান থাকার বিরুদ্ধে যুদ্ধ করবে। এটি আপনার দৃষ্টিভঙ্গিটি দেখার জন্য কেবল বাধ্য করবে get তবে আপনার যদি খুব বেশি জায়গা না থাকে এবং পরিবর্তে খুব অল্প জায়গা থাকে তবে content-compressions-resistanceতার সমস্ত বিষয়বস্তু প্রদর্শন করতে না পারার কারণে আপনার দৃষ্টিভঙ্গির বিরুদ্ধে লড়াই করবেন, যেমন লেবেলগুলি কেটে যাবে।
মধু

উত্তর:


1319

ধারণাগুলির একটি দ্রুত সংক্ষিপ্তসার:

  • আলিঙ্গন => সামগ্রী বাড়তে চায় না
  • সংক্ষেপণ প্রতিরোধের => সামগ্রী সঙ্কুচিত করতে চায় না

উদাহরণ:

বলুন যে আপনি এর মতো একটি বোতাম পেয়েছেন:

[       Click Me      ]

এবং আপনি অগ্রাধিকার 500 সহ একটি বড় সুপারভিউতে প্রান্তগুলি পিন করেছেন।

তারপরে, যদি আলিঙ্গন অগ্রাধিকার> 500 হয় তবে এটির মতো দেখাবে:

[Click Me]

যদি আলিঙ্গন অগ্রাধিকার <500 এটি দেখতে এটির মতো দেখায়:

[       Click Me      ]

যদি এখন সুপারভিউ সঙ্কুচিত হয় তবে, যদি সংক্ষেপণ প্রতিরোধের অগ্রাধিকার> 500, এটি দেখতে এটির মতো লাগবে

[Click Me]

অন্যথায় যদি সংক্ষেপণ প্রতিরোধের অগ্রাধিকার <500, এটি দেখতে এটির মতো হতে পারে:

[Cli..]

যদি এটি যদি এটির মতো কাজ না করে তবে আপনার সম্ভবত সম্ভবত আরও কিছু বাধা আছে যা আপনার ভাল কাজকে গোলমাল করছে!

উদাহরণস্বরূপ আপনি এটিকে অগ্রাধিকার 1000 দিয়ে তদারকিতে পিন করতে পারেন Or বা আপনার প্রস্থের অগ্রাধিকার থাকতে পারে। যদি তা হয় তবে এটি সহায়ক হতে পারে:

সম্পাদক> আকারে ফটোগুলি


37
অগ্রাধিকার == 500 জড়িয়ে ধরলে কী হবে?
bradley.ayers

1
আমি ধরে নিই (তবে এটি সাধারণত কোনও ভাল ধারণা নয়) এটি সাধারণ গোলাকার আচরণের মতো> 500 হিসাবে বিবেচিত হবে। যদিও এটি পরীক্ষা করা হয়নি।
জোশুয়া নউজি

সম্ভবত রানটাইমে আপনি "একই সাথে সীমাবদ্ধতাগুলি পূরণ করতে অক্ষম" সতর্কতা
পেয়ে যাবেন

8
@ ব্র্যাডলি.ইয়ার্স ম্যাক্সডেস্যাটোভের মন্তব্যে, এটি কেবল তখনই ঘটবে যদি আপনার প্রয়োজনীয় অগ্রাধিকার (1000) নিয়ে দ্বন্দ্ব বাধা থাকে। যদি দুটি নিম্ন-অগ্রাধিকারের বিরোধ বাধা দেয় তবে সমাধানটি দ্ব্যর্থহীন তাই অটো লেআউট ইঞ্জিন কেবলমাত্র একটি বৈধ সমাধান বেছে নেবে এবং এটিই আপনি দেখতে পাবেন (কোনও সতর্কতা নেই)। স্পষ্টতই এটি ভাল নয়, কারণ আপনার লেআউটটি কেমন দেখাচ্ছে তা চয়ন করা এখন অটো লেআউট ইঞ্জিনের অভ্যন্তরীণ বাস্তবায়নের উপর নির্ভর করে এবং তাত্ত্বিকভাবে এটি একটি আইওএস সংস্করণ থেকে পরেরটিতে পরিবর্তিত হতে পারে!
স্মাইলিবার্গ

বিষয়বস্তু আলিঙ্গন অগ্রাধিকার ডিফল্ট 250, এবং সামগ্রী সংক্ষেপণ প্রতিরোধের ডিফল্ট 750. সুতরাং কেন 500 ব্যবহার করবেন?
ZYiOS

292

অটোলেআউট সম্পর্কে এই ভিডিও টিউটোরিয়ালটি একবার দেখুন , তারা এটিকে সাবধানে ব্যাখ্যা করে

এখানে চিত্র বর্ণনা লিখুন


1
@ ফাতুহোকু আপনি আবার যাচাই করতে পারেন, এই ভিডিওটি বিনামূল্যে
onmyway133

31
আলিঙ্গন বনাম প্রতিরোধের আলোচনা ভিডিওটির 13:15 পয়েন্টের দিকে শুরু হয়।
কার্ল স্মিথ

1
@ onmyway133 এটি নিখুঁত ভিডিও, তবে দুর্ভাগ্যক্রমে রে কীভাবে এটি ব্যবহার করে তার কোনও উদাহরণ নেই।
মাতরোসভ আলেকজান্ডার

@ ম্যাট্রোসোভ অ্যালেক্সান্দার আমি মনে করি একটি খুব ব্যবহারিক উদাহরণ হ'ল ডায়ামিকাল
onmyway133


187

এখানে চিত্র বর্ণনা লিখুন

উত্স: @ মোকাগিও

অন্তর্নিহিত সামগ্রীর আকার - খুব স্ব-বর্ণনামূলক, তবে পরিবর্তনশীল সামগ্রীর সাথে দেখাগুলি তাদের বিষয়বস্তু কতটা বড় তা সম্পর্কে সচেতন এবং এই সম্পত্তিটির মাধ্যমে তাদের সামগ্রীর আকার বর্ণনা করে। অভ্যন্তরীণ কন্টেন্ট আকারের মতামতের কয়েকটি সুস্পষ্ট উদাহরণ হ'ল ইউআইআইমেজভিউস, ইউআইআইএলবেলস, ইউআইবাটনস।

বিষয়বস্তু আলিঙ্গন অগ্রাধিকার - এই অগ্রাধিকারটি যত বেশি হবে তত বেশি ভিউ তার অভ্যন্তরীণ সামগ্রীর আকারের চেয়ে বড় হওয়ার প্রতিরোধ করে।

বিষয়বস্তু সংক্ষেপণ প্রতিরোধের অগ্রাধিকার - এই অগ্রাধিকারটি যত বেশি হবে তত দৃষ্টিভঙ্গি তার অভ্যন্তরীণ সামগ্রীর আকারের চেয়ে ছোট সঙ্কোচনের বিরুদ্ধে প্রতিরোধ করবে।

আরও ব্যাখ্যার জন্য এখানে চেক করুন : স্বয়ং লেআউট ম্যাজিক: বিষয়বস্তু সাইজিং অগ্রাধিকার


চিত্রটি দুর্দান্ত তবে কমপক্ষে বলতে বিভ্রান্তিকর। শীর্ষ লোকের উচিত "আমি বাড়তে চাই না (এমই) বাড়ুক" grow শিশু দৃষ্টিভঙ্গি নিজে থেকেই সংজ্ঞা দেয় যে এটি কন্টেন্ট আলিঙ্গন আচরণের মাধ্যমে বাড়তে চায় না। কোনও এক্সোজেনিক শক্তি (চিত্রিত হাতের মতো) নেই যা এটিকে বাড়তে বাধা দেয়। এটি একটি বড় পার্থক্য।
ম্যানুয়েল

6
আমি উদাহরণ দিয়েছি বলেই আমি এই ভোটাভুটি করছি।
জেমস বুকানেক

3
এ কারণেই আমি স্ট্যাক ওভারফ্লো পছন্দ করি ... স্নো ক্র্যাশের বর্ণনা এবং মোকাজিওর এই চিত্রণ = এই বৈশিষ্ট্যগুলির যে কোনও জায়গায় সেরা ব্যাখ্যা (অ্যাপলের নিজস্ব ডকুমেন্টেশন সহ)।
কাল

40

ধরা যাক আপনার কাছে "আমাকে ক্লিক করুন" পাঠ্য সহ একটি বোতাম রয়েছে। সেই বোতামটি কত প্রস্থ হওয়া উচিত?

প্রথমত, আপনি স্পষ্টভাবে বাটনটি টেক্সটের চেয়ে ছোট হতে চান না। অন্যথায়, পাঠ্যটি ক্লিপ হবে। এটি অনুভূমিক সংক্ষেপণ প্রতিরোধের অগ্রাধিকার।

দ্বিতীয়ত, আপনি বাটনটি যতটা প্রয়োজন তার চেয়ে বড় হতে চান না। এই জাতীয় দেখতে দেখতে একটি বোতাম, [আমাকে ক্লিক করুন], অবশ্যই খুব বড় too আপনি বাটনটি খুব বেশি প্যাডিং ছাড়াই এর সামগ্রীগুলিকে "আলিঙ্গন" করতে চান। এটি হাইডিং অনুভূমিক বিষয়বস্তু priority একটি বোতামের জন্য, এটি অনুভূমিক সংক্ষেপণ প্রতিরোধের অগ্রাধিকারের মতো শক্তিশালী নয়।


19

যদি 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>

1
এটি হওয়া উচিত নয়: যাক উল্লম্ব সংক্ষেপণ = ভিউ.হাইটএঞ্চরকন্ট্রেন্ট (বৃহত্তর থানঅরকোয়ালটোকনস্ট্যান্ট: ভিউ.ইন্ট্রিনসিক কনটেন্টসাইজ.হাইট)
এমসি_প্লেক্ট্রাম

1
হ্যাঁ, আমি একটি অনুলিপি / পেস্ট ত্রুটি করেছি। আমি এটি সংশোধন করেছি। আমাকে অবগত করার জন্য ধন্যবাদ.
রব মেয়ফ

15

বিষয়বস্তু আলিঙ্গন এবং সামগ্রী সংক্ষেপণ প্রতিরোধের অগ্রাধিকারগুলি উপাদানগুলির জন্য কাজ করে যা ভিতরে উপস্থিত সামগ্রীগুলির উপর নির্ভর করে তাদের আকারের স্বতন্ত্রভাবে গণনা করতে পারে।

অ্যাপল ডক্স থেকে :

এখানে চিত্র বর্ণনা লিখুন


চিত্রের জন্য প্লাস 1 (Y)
নূর আলী বাট

আমি বিভ্রান্ত এমন পাঠ্য দেখার জন্য যা স্ক্রোলিং সক্ষম করে না। তার মানে কি প্রতি ব্যবহারকারী টাইপ করে অভ্যন্তরীণ আকার পরিবর্তন হবে?
মধু

@ মধু আমি মনে করি সঠিক প্রতিবন্ধকতা সেট ও স্ক্রোলিং অক্ষম করে, পাঠ্য দর্শনটি অন্তর্নিহিত উচ্চতা বলতে সক্ষম হওয়া উচিত।
দেব জিআর

এটা আমার প্রশ্নের উত্তর দেয় নি। আপনার অর্থ যদি আমি অনেক বেশি টাইপ করি তবে টেক্সটভিউয়ের বর্তমান আকারের চেয়েও বেশি .... টেক্সটভিউটি কী স্বয়ংক্রিয়ভাবে প্রসারিত হবে এবং অভ্যন্তরীণ আকার পরিবর্তন করবে?
মধু

এটি নিজে চেষ্টা করো. পাঠ্যদর্শনকে একটি নির্দিষ্ট প্রস্থ দিন এবং স্ক্রোলটি অক্ষম করুন এবং পছন্দসই আচরণের জন্য চেক করুন। পড়ুন stackoverflow.com/a/21287306/1526629 আরো উত্তর জন্য।
দেব জিআর

11

এটি Content hugging priorityহ'ল একটি রাবার ব্যান্ডের মতো যা একটি দৃশ্যের চারপাশে স্থাপন করা হয়। অগ্রাধিকারের মানটি যত বেশি, রাবার ব্যান্ড তত বেশি শক্তিশালী এবং তত বেশি তার সামগ্রী আকারে আলিঙ্গন করতে চায়। অগ্রাধিকার মানটি রাবার ব্যান্ডের "শক্তি" এর মতো কল্পনা করা যায়

এবং Content Compression Resistanceহ'ল, একটি দৃশ্যের পরিমাণ কত কম "প্রতিরোধ" হয় উচ্চতর প্রতিরোধের অগ্রাধিকার মানের সাথে দর্শনটি হ'ল সংকোচনের বিরুদ্ধে প্রতিরোধ করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.