এখন, ইন্টারফেস বিল্ডার ব্যবহারকারীকে নির্দিষ্ট ডিভাইসের আকার অনুকরণ করতে স্টোরিবোর্ডে প্রতিটি ভিউ কন্ট্রোলারের আকার পরিবর্তনশীল করতে দেয়।
এই কার্যকারিতাটির আগে ব্যবহারকারীর প্রতিটি ভিউ নিয়ন্ত্রকের আকার ম্যানুয়ালি সেট করা উচিত। সুতরাং ভিউ কন্ট্রোলারটি একটি নির্দিষ্ট আকারের সাহায্যে সংরক্ষণ করা হয়েছিল, যা ব্যবহৃত হয়েছিলinitWithCoder
প্রাথমিক ফ্রেম সেট করতে ।
এখন, এটি মনে হয় initWithCoder
স্টোরিবোর্ডে সংজ্ঞায়িত আকারটি ব্যবহার করবেন না এবং ভিউকন্ট্রোলার দর্শন এবং এর সমস্ত সাবভিউগুলির জন্য 1000x1000 পিক্সেল আকার নির্ধারণ করবেন না।
এটি কোনও সমস্যা নয়, কারণ দর্শকদের সর্বদা এই বিন্যাস সমাধানগুলির মধ্যে দুটি ব্যবহার করা উচিত:
অটোলেআউট এবং সমস্ত সীমাবদ্ধতা আপনার দর্শন সঠিকভাবে বিন্যাস করবে
অটোরাইজিংমাস্ক, যা প্রতিটি দৃশ্যের সাথে লেআউট করবে যার সাথে কোনও বাধা নেই ( নোট অটোলেআউট এবং মার্জিন সীমাবদ্ধতাগুলি এখন একই দৃষ্টিতে সামঞ্জস্যপূর্ণ are o /! )
তবে ভিউ লেয়ারের সাথে সম্পর্কিত সমস্ত লেআউট স্টাফগুলির জন্য এটি একটি সমস্যা cornerRadius
, যেহেতু অটোলেআউট বা স্বয়ংক্রিয়করণের মুখোশ স্তর স্তরের বৈশিষ্ট্যে প্রযোজ্য নয় ।
এই সমস্যার উত্তর দেওয়ার জন্য, সাধারণ উপায়টি হ'ল আপনি viewDidLayoutSubviews
যদি নিয়ামক হন বা layoutSubview
আপনি যদি কোনও দৃষ্টিতে থাকেন তবে তা ব্যবহার করা। এই মুহুর্তে (তাদের super
আপেক্ষিক পদ্ধতিগুলি কল করতে ভুলবেন না ), আপনি নিশ্চিত যে সমস্ত লেআউট স্টাফ সম্পন্ন হয়েছে!
বেশ নিশ্চিত? হুম ... পুরোপুরি নয়, আমি মন্তব্য করেছি এবং সে কারণেই আমি এই প্রশ্নটি জিজ্ঞাসা করেছি, কিছু ক্ষেত্রে এখনও ভিউটির এই পদ্ধতিতে 1000x1000 আকার রয়েছে। আমি মনে করি আমার নিজের প্রশ্নের কোনও উত্তর নেই। এটি সম্পর্কে সর্বাধিক তথ্য দিতে:
1- কেবল তখন ঘরগুলি ছড়িয়ে দেওয়ার সময় এটি সুখী হয়! ইন UITableViewCell
& UICollectionViewCell
উপশ্রেণী, layoutSubview
বলা হবে না পরে subviews সঠিকভাবে আউট layed করা হবে।
২- @ ইউজেনডিম্বোইউ যেমন মন্তব্য করেছিলেন (দয়া করে আপনার উত্তর কার্যকর হলে তার উত্তরটি উপস্থাপন করুন), [myView layoutIfNeeded]
বিনা স্তরযুক্ত সাবভিউতে কল করা ঠিক সময়ে সঠিকভাবে বিন্যাস করবে।
- (void)layoutSubviews {
[super layoutSubviews];
NSLog (self.myLabel);
[self.myLabel layoutIfNeeded];
NSLog (self.myLabel);
}
3- আমার মতে এটি অবশ্যই একটি বাগ is আমি এটি রাডারে জমা করেছি (আইডি 28562874)।
পিএস: আমি ইংরেজী নেটিভ নই, সুতরাং আমার ব্যাকরণ সংশোধন করা উচিত তবে আমার পোস্টটি সম্পাদনা করতে নির্দ্বিধায়;)
পিএস 2: আপনার যদি আরও ভাল সমাধান থাকে তবে নির্দ্বিধায় অন্য উত্তর না লিখুন। আমি গৃহীত উত্তর সরান।