আমি কেন বুঝতে পারছি না যে লোকেরা কেন অভিযোগ করছে যে " মার্জিনগুলি আইওএস ৮ এর আগে যে কোনও কিছুতে সরাসরি ক্র্যাশ ঘটায়। "
এক্সবি ফাইল বা স্টোরিবোর্ডে মার্জিনের তুলনায় আপনার প্রতিবন্ধকতাগুলি সেট করা আইওএস 7-এ আপনার অ্যাপ্লিকেশনটি ক্রাশ করে না এবং যতক্ষণ না আপনি আপনার কোডটিতে থাকা বৈশিষ্ট্যগুলি UIView.layoutMargins
এবং স্পর্শ না করেন ততক্ষণ আপনার আইওএস 7 ডিভাইসে কোনও ইউআই পার্থক্য তৈরি করে না UIView.preservesSuperviewLayoutMargins
।
আইওএস 8-এ মার্জিন কী
লেআউট মার্জিনগুলি এমন একটি অভ্যন্তরের চারপাশে প্যাডিং উপস্থাপন UIView
করে যা লেআউট সিস্টেম সাবউভিউগুলি রাখার সময় ব্যবহার করতে পারে - এটি দেখার জন্য যে কোনও দর্শন এবং একটি সংক্ষিপ্তসার প্রান্তের মধ্যে ফাঁক রয়েছে। এই ক্ষেত্রে এটি অনেকটা CSS এর ব্লকের সাথে যুক্ত প্যাডিং সম্পত্তির মতো।
ডিফল্টরূপে, UIView
প্রতিটি দিকে 8 পয়েন্টের লেআউট মার্জিন থাকে এবং ইন্টারফেস বিল্ডারে এটি পরিবর্তন করা যায় না । তবে UIView.layoutMargins
কোডটিতে সম্পত্তি সেট করে যা কেবল আইওএস 8 এ উপলব্ধ, আপনি এই মানগুলি সামঞ্জস্য করতে সক্ষম হবেন।
আপনি সম্পাদক> ক্যানভাস> লেআউটটি আয়তক্ষেত্রগুলি প্রদর্শন করে মার্জিনগুলি প্রদর্শন করতে আইবি পেতে পারেন :
মার্জিনগুলি আপনার দর্শন এবং সংক্ষিপ্তসারগুলি বিন্যাসে সহায়তা করতে ব্যবহৃত হতে পারে। প্রত্যেকে UIView
ডিফল্টরূপে মার্জিনের সাথে আসে তবে তারা কেবলমাত্র কোনও প্রান্তিকের সাথে সম্পর্কিত একটি সীমাবদ্ধতা সেট আপ করার সময় প্লেসমেন্টটি দেখায়।
মার্জিন কীভাবে ব্যবহার করবেন
ইন্টারফেস বিল্ডারে মার্জিনগুলি ব্যবহার করার একমাত্র উপায় হ'ল আপনার সীমাবদ্ধতাগুলি কনফিগার করার সময় আপেক্ষিক থেকে মার্জিন বিকল্পটি পরীক্ষা করা । আমার দৃষ্টিভঙ্গিটি প্রস্থান করার সময় আপনি এভাবেই প্রান্তগুলির পরিবর্তে মার্জিনগুলি ব্যবহার করার জন্য আপনার সীমাবদ্ধতার নির্দেশনা দিন ।
আসুন একটি দৃষ্টিভঙ্গি এবং এর সংক্ষিপ্তসার মধ্যে একটি নেতৃস্থানীয় সীমাবদ্ধতা সেট করার চারটি ভিন্ন উপায়ের এক ঝলক দেখি। প্রতিটি প্রতিবন্ধকতার জন্য আমরা বর্ণিত প্রথম অ্যাসোসিয়েশনটি হ'ল সাবভিউয়ের শীর্ষস্থানীয় এবং দ্বিতীয়টি সুপারভাইজারের শীর্ষস্থানীয় হবে । আপনি যেদিকে গভীর মনোযোগ দিতে চান তা হ'ল প্রতিটি প্রতিবন্ধকতার প্রান্তের তুলনামূলক থেকে মার্জিন বিকল্পের চেক এবং আনচেক অবস্থা , কারণ এটি নির্ধারণ করে যে সীমাবদ্ধতা মার্জিনের সাথে বাঁধা আছে বা ভিউয়ের প্রান্তে whether
- প্রথম আইটেম (আনচেক), দ্বিতীয় আইটেম (চেক): এই ক্ষেত্রে, আমরা ঘোষণা করছি যে সাবভিউয়ের বাম প্রান্তটি সুপারভিউয়ের বাম মার্জিনের সাথে প্রান্তিক হওয়া উচিত (এই চিত্রটিতে প্রদর্শিত হিসাবে)।
- প্রথম আইটেম (আনচেক), দ্বিতীয় আইটেম (আনচেক): উভয় প্রান্ত ব্যবহার করে, মার্জিন নয় । এই ক্ষেত্রে, আমরা ঘোষণা করছি যে সাবভিউয়ের বাম প্রান্তটি সুপারভিউয়ের বাম প্রান্তে প্রান্তিক হওয়া উচিত।
- প্রথম আইটেম (চেক), দ্বিতীয় আইটেম (আনচেক): এই ক্ষেত্রে, আমরা ঘোষণা করছি যে সাবভিউয়ের বাম মার্জিনটি সুপারভিউয়ের বাম প্রান্তে প্রান্তিক হওয়া উচিত। এই ধরণের লেআউটটি প্রকৃতপক্ষে পর্যবেক্ষণটিকে ওভারল্যাপ করে।
- প্রথম আইটেম (চেক), দ্বিতীয় আইটেম (চেক)। এটি প্রকৃতপক্ষে কেস 2 এর মতো একই প্রভাব ফেলছে, যেহেতু সাবভিউ এবং সুপারভিউ উভয়েরই একই ডিফল্ট মার্জিন রয়েছে। আমরা ঘোষণা করছি যে সাবভিউয়ের বাম মার্জিনটি সুপারভাইজারের বাম মার্জিনে প্রান্তিক হওয়া উচিত।
মার্জিন সম্পর্কে ভাল কি
আপনি যদি মার্জিন ব্যবহারের সিদ্ধান্ত নেন তবে এই নতুন বৈশিষ্ট্যটি (আইওএস 8) কেবলমাত্র ইউআই বিকাশকে প্রভাবিত করবে।
মার্জিন ব্যবহার করে আপনি একাধিক সাবভিউয়ের স্থান নির্ধারণ করতে পারেন যা একটি একক সম্পত্তির মান পরিবর্তন করে একটি ভাগ করা তদারকির সাথে একটি সাধারণ সম্পর্ক ভাগ করে। স্থির মানগুলির সাথে সম্পর্কিত সমস্ত সীমাবদ্ধতা নির্ধারণের ক্ষেত্রে এটি একটি সুস্পষ্ট জয়, কারণ যদি আপনাকে প্রতিটি ব্যবধান আপডেট করার প্রয়োজন হয় তবে প্রতিটি মান একের পর এক পরিবর্তনের পরিবর্তে আপনি একই সাথে একক লাইনের সাথে তত্ত্বাবধানের মার্জিন আপডেট করে সমস্ত প্রাসঙ্গিক স্থান পরিবর্তন করতে পারেন এই মত কোড:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
এই সুবিধাটি চিত্রিত করার জন্য, নিম্নলিখিত ক্ষেত্রে সমস্ত সাবভিউয়ের বাম প্রান্তগুলি তাদের তত্ত্বাবধানের বাম মার্জিনে প্রান্তিক করা আছে। সুতরাং তত্ত্বাবধানের বাম মার্জিন পরিবর্তন করা একই সময়ে সমস্ত সাবভিউগুলিকে প্রভাবিত করবে।