UIStackViewএর সাজানো সাবউভিউগুলি অবস্থানের জন্য অভ্যন্তরীণভাবে সীমাবদ্ধতা ব্যবহার করে। ঠিক কী কী সীমাবদ্ধতা তৈরি হয় তা নির্ভর করে স্ট্যাক ভিউটি কীভাবে কনফিগার করা যায় তার উপর নির্ভর করে। ডিফল্টরূপে, একটি স্ট্যাক ভিউ এমন একটি প্রতিবন্ধকতা তৈরি করবে যা তার ব্যবস্থা করা সংক্ষিপ্তসারগুলি একটি অনুভূমিক রেখায় রেখে দেয়, তার নেতৃত্বাধীন এবং অনুসরণকারী দর্শনগুলিকে তার নিজস্ব এবং শীর্ষস্থানীয় প্রান্তগুলিতে পিন করে। সুতরাং আপনার কোডটি এমন লেআউট তৈরি করবে যা দেখতে এই জাতীয় দেখাচ্ছে:
|[view1][view2]|
প্রতিটি সাবভিউতে বরাদ্দ করা স্থানটি সংক্ষিপ্তসার অভ্যন্তরীণ সামগ্রীর আকার এবং এটির সংকোচন প্রতিরোধের এবং সামগ্রীকে জড়িয়ে থাকা অগ্রাধিকার সহ বিভিন্ন কারণ দ্বারা নির্ধারিত হয়। ডিফল্টরূপে, UIViewদৃষ্টান্তগুলি অভ্যন্তরীণ সামগ্রীর আকারকে সংজ্ঞায়িত করে না। এটি এমন একটি বিষয় যা সাধারণত একটি সাবক্লাস দ্বারা সরবরাহ করা হয়, যেমন UILabelবা UIButton।
যেহেতু দুটি নতুন UIViewদৃষ্টান্তের সামগ্রীর সংকোচনের প্রতিরোধের এবং সামগ্রীকে আলিঙ্গনকারী অগ্রাধিকারগুলি একই হবে এবং উভয়ই দৃষ্টিভঙ্গি একটি অন্তর্নিহিত সামগ্রীর আকার সরবরাহ করে না, প্রতিটি ভিউতে কোন আকারটি বরাদ্দ করা উচিত সে সম্পর্কে লেআউট ইঞ্জিনকে অবশ্যই তার সেরা অনুমান করতে হবে। আপনার ক্ষেত্রে এটি প্রথম স্থানটি উপলব্ধ স্থানের 100% এবং দ্বিতীয় দর্শনে কিছুই দিচ্ছে না।
UILabelপরিবর্তে উদাহরণগুলি ব্যবহার করার জন্য আপনি যদি আপনার কোডটি পরিবর্তন করেন তবে আপনি আরও ভাল ফলাফল পাবেন:
UILabel *label1 = [UILabel new];
label1.text = @"Label 1";
label1.backgroundColor = [UIColor blueColor];
UILabel *label2 = [UILabel new];
label2.text = @"Label 2";
label2.backgroundColor = [UIColor greenColor];
[self.stack1 addArrangedSubview:label1];
[self.stack1 addArrangedSubview:label2];
মনে রাখবেন যে নিজেকে কোনও প্রতিবন্ধকতা স্পষ্টভাবে তৈরি করা প্রয়োজন নয়। এটি ব্যবহারের মূল সুবিধা UIStackView- এটি বিকাশকারী থেকে সীমাবদ্ধতা পরিচালনার (প্রায়শই কুৎসিত) বিবরণ গোপন করে।