আমি জানি যে অটো লেআউট চেইনে মূলত 3 টি পৃথক প্রক্রিয়া থাকে।
- সীমাবদ্ধতা আপডেট
- বিন্যাসের দর্শন (এখানে আমরা ফ্রেমের গণনা পাই)
- প্রদর্শন
কি সম্পূর্ণই আমার কাছে পরিষ্কার না হয় মধ্যে ভেতরের পার্থক্য নেই -setNeedsLayout
এবং -setNeedsUpdateConstraints
। অ্যাপল ডক্স থেকে:
আপনি যখন কোনও দৃশ্যের সংক্ষিপ্তসার লেআউটটি সামঞ্জস্য করতে চান তখন আপনার অ্যাপ্লিকেশনটির মূল থ্রেডটিতে এই পদ্ধতিটি কল করুন। এই পদ্ধতিটি অনুরোধের একটি নোট তৈরি করে এবং তত্ক্ষণাত্ ফিরে আসে। কারণ এই পদ্ধতিটি কোনও তাত্ক্ষণিক আপডেট জোর করে না, পরিবর্তে পরবর্তী আপডেটের চক্রের জন্য অপেক্ষা করে, আপনি এর কোনও ভিউ আপডেট হওয়ার আগে আপনি একাধিক দর্শনের বিন্যাসটি অবৈধ করতে এটি ব্যবহার করতে পারেন। এই আচরণটি আপনাকে আপনার লেআউট আপডেটগুলি এক আপডেট চক্রের সাথে একীভূত করতে দেয়, যা সাধারণত সম্পাদনার জন্য ভাল।
যখন আপনার কাস্টম দর্শনটির কোনও সম্পত্তি এমনভাবে পরিবর্তিত হবে যা সীমাবদ্ধতাগুলিকে প্রভাবিত করবে, আপনি ভবিষ্যতের কোনও সময়ে সীমাবদ্ধতাগুলি আপডেট করতে হবে তা বোঝাতে এই পদ্ধতিটি কল করতে পারেন। এরপরে সিস্টেমটি তার সাধারণ লেআউট পাসের অংশ হিসাবে আপডেটকেনট্রেটসকে কল করবে। সীমাবদ্ধতাগুলির প্রয়োজন হওয়ার ঠিক এক মুহুর্তে একবারে আপডেট করার বিষয়টি নিশ্চিত করে যে যখন বিন্যাসের পাসগুলির মধ্যে আপনার দৃষ্টিতে একাধিক পরিবর্তন করা হয় তখন আপনি অযথা বাধা অতিক্রম করবেন না।
যখন আমি কোনও সীমাবদ্ধতা সংশোধন করার পরে একটি দৃশ্যকে সঞ্জীবিত করতে চাই এবং আমি সাধারণত যে পরিবর্তনগুলি বলি তা অ্যানিমেট করতে চাই:
[UIView animateWithDuration:1.0f delay:0.0f usingSpringWithDamping:0.5f initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
[self.modifConstrView setNeedsUpdateConstraints];
[self.modifConstrView layoutIfNeeded];
} completion:NULL];
আমি খুঁজে পেয়েছি যে আমি যদি সবকিছু -setNeedsLayout
পরিবর্তে -setNeedsUpdateConstraints
প্রত্যাশা অনুযায়ী ব্যবহার করি তবে আমি যদি এটির -layoutIfNeeded
সাথে পরিবর্তন করি -updateConstraintsIfNeeded
তবে অ্যানিমেশনটি ঘটবে না।
আমি আমার নিজের উপসংহারটি চেষ্টা করার চেষ্টা করেছি:
-updateConstraintsIfNeeded
কেবলমাত্র সীমাবদ্ধতাগুলি আপডেট করে তবে লেআউটটি প্রক্রিয়াতে আসতে বাধ্য করে না, সুতরাং মূল ফ্রেমগুলি এখনও সংরক্ষিত রয়েছে-setNeedsLayout
কল এছাড়াও-updateContraints
পদ্ধতি
সুতরাং যখন অন্যটির পরিবর্তে একটি ব্যবহার করা ঠিক আছে? এবং লেআউট পদ্ধতিগুলি সম্পর্কে, আমার কি তাদের এই দৃষ্টিভঙ্গিতে কোনও পরিবর্তন বা অভিভাবকের দৃষ্টিভঙ্গিতে পরিবর্তন রয়েছে এমন কল করা উচিত?