এক্সকোড 6 এর স্টোরিবোর্ডে "মার্জিন টু মার্জিন" কী What


248

আমি অটোলেআউট এবং সীমাবদ্ধতা নিয়ে কাজ করছি এবং দেখতে পেলাম Constrain to marginsএক্সকোড 6 এ একটি বিকল্প রয়েছে যা এক্সকোড 5 এ উপস্থিত ছিল না এবং এটি ডিফল্টরূপে চেক করা হয়েছে।

আমি একটি পরীক্ষার প্রকল্প তৈরি করেছি তারপরে আমি UITableViewদৃশ্যের সাথে একই আকারে সেট করা সীমাবদ্ধতাগুলি যুক্ত করে একটি ভিউকন্ট্রোলারটিতে একটি যুক্ত করেছি

এক্সকোড 6 আপনি এখানে দেখতে পাচ্ছেন যদিও টেবিলভিউতে একই ফ্রেম রয়েছে যেমন ভিউ Xcode সীমাবদ্ধ হিসাবে -16 যোগ করার পরামর্শ দেয় যেখানে Xcode 5 ব্যবধান 0 যুক্ত করার পরামর্শ দেয়।

সীমানা থেকে মার্জিন চেক করা হয়েছে

এখন যখন আপনি "মার্জিন থেকে সীমানা" বিকল্পটি চেক করেন এটি এক্সকোড 5 এর মতো আচরণ করে এবং 0 টি বাধা হিসাবে যুক্ত করার পরামর্শ দেয়

সীমার সাথে মার্জিন আনচেকড করা আছে With

এছাড়াও, আমি দেখতে পেলাম যে একবার আমি কনস্ট্রেনের সাথে বাধা যুক্ত করে মার্জিন চেক করে দিয়েছি, আমি আর এক্সকোড 5-তে স্টোরিবোর্ড ফাইলটি খুলতে পারছি না তাই এটি অবশ্যই এক্সকোড 6-তে নতুন কিছু

আশা করি, আমি আমার প্রশ্নটি সঠিকভাবে ব্যাখ্যা করতে সক্ষম হয়েছি। আমি বুঝতে চাই "মার্জিন টু মার্জিন" আসলে কী করে এবং কখন আমার এটি ব্যবহার করা উচিত এবং উচিত নয়। এটি খুব সাধারণ এবং সুস্পষ্ট কিছু হলে আমি ক্ষমা চাইছি।

সম্পাদনা

আমি এখানে আলোচনায় লেআউট মার্জিন সম্পর্কে কিছু পেয়েছি , আমি এটির সাথে সম্পর্কিত কিনা তা অবাক করি।


15
ক্ষমা চাইতে হবে না - এটি আদৌ কী করে তা স্পষ্ট নয়।
বেন ক্লেটন

4
+1 ক্ষমা চাইতে হবে না, আমিও এই প্রশ্নটি জিজ্ঞাসা করতে চেয়েছিলাম। বিটিডাব্লু: এক্সকোডে স্টোরিবোর্ডটি খোলার জন্য একবার দেখুন: stackoverflow.com/a/25298909/529243
ওলাফ

1
এটি আমার কাছে পাওয়া একটি ব্যাখ্যার নিকটতম বিষয়: স্ট্যাকওভারফ্লো
নাথানিয়েল

এটি কীভাবে অক্ষম করবেন?
orkenstein

2
হ্যাঁ আসল ব্যথা হয়। আমি স্থির করতে পারি না, কীভাবে এটি স্থায়ীভাবে চেক করা যায়।
ভুমিত মেহতা

উত্তর:


315

আমি কেন বুঝতে পারছি না যে লোকেরা কেন অভিযোগ করছে যে " মার্জিনগুলি আইওএস ৮ এর আগে যে কোনও কিছুতে সরাসরি ক্র্যাশ ঘটায়। "

এক্সবি ফাইল বা স্টোরিবোর্ডে মার্জিনের তুলনায় আপনার প্রতিবন্ধকতাগুলি সেট করা আইওএস 7-এ আপনার অ্যাপ্লিকেশনটি ক্রাশ করে না এবং যতক্ষণ না আপনি আপনার কোডটিতে থাকা বৈশিষ্ট্যগুলি UIView.layoutMarginsএবং স্পর্শ না করেন ততক্ষণ আপনার আইওএস 7 ডিভাইসে কোনও ইউআই পার্থক্য তৈরি করে না UIView.preservesSuperviewLayoutMargins

আইওএস 8-এ মার্জিন কী

লেআউট মার্জিনগুলি এমন একটি অভ্যন্তরের চারপাশে প্যাডিং উপস্থাপন UIViewকরে যা লেআউট সিস্টেম সাবউভিউগুলি রাখার সময় ব্যবহার করতে পারে - এটি দেখার জন্য যে কোনও দর্শন এবং একটি সংক্ষিপ্তসার প্রান্তের মধ্যে ফাঁক রয়েছে। এই ক্ষেত্রে এটি অনেকটা CSS এর ব্লকের সাথে যুক্ত প্যাডিং সম্পত্তির মতো।

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

ডিফল্টরূপে, UIViewপ্রতিটি দিকে 8 পয়েন্টের লেআউট মার্জিন থাকে এবং ইন্টারফেস বিল্ডারে এটি পরিবর্তন করা যায় না । তবে UIView.layoutMarginsকোডটিতে সম্পত্তি সেট করে যা কেবল আইওএস 8 এ উপলব্ধ, আপনি এই মানগুলি সামঞ্জস্য করতে সক্ষম হবেন।

আপনি সম্পাদক> ক্যানভাস> লেআউটটি আয়তক্ষেত্রগুলি প্রদর্শন করে মার্জিনগুলি প্রদর্শন করতে আইবি পেতে পারেন : এখানে চিত্র বর্ণনা লিখুন

মার্জিনগুলি আপনার দর্শন এবং সংক্ষিপ্তসারগুলি বিন্যাসে সহায়তা করতে ব্যবহৃত হতে পারে। প্রত্যেকে UIViewডিফল্টরূপে মার্জিনের সাথে আসে তবে তারা কেবলমাত্র কোনও প্রান্তিকের সাথে সম্পর্কিত একটি সীমাবদ্ধতা সেট আপ করার সময় প্লেসমেন্টটি দেখায়।

মার্জিন কীভাবে ব্যবহার করবেন

ইন্টারফেস বিল্ডারে মার্জিনগুলি ব্যবহার করার একমাত্র উপায় হ'ল আপনার সীমাবদ্ধতাগুলি কনফিগার করার সময় আপেক্ষিক থেকে মার্জিন বিকল্পটি পরীক্ষা করা । আমার দৃষ্টিভঙ্গিটি প্রস্থান করার সময় আপনি এভাবেই প্রান্তগুলির পরিবর্তে মার্জিনগুলি ব্যবহার করার জন্য আপনার সীমাবদ্ধতার নির্দেশনা দিন

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

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

  1. প্রথম আইটেম (আনচেক), দ্বিতীয় আইটেম (চেক): এই ক্ষেত্রে, আমরা ঘোষণা করছি যে সাবভিউয়ের বাম প্রান্তটি সুপারভিউয়ের বাম মার্জিনের সাথে প্রান্তিক হওয়া উচিত (এই চিত্রটিতে প্রদর্শিত হিসাবে)।

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

  1. প্রথম আইটেম (আনচেক), দ্বিতীয় আইটেম (আনচেক): উভয় প্রান্ত ব্যবহার করে, মার্জিন নয় । এই ক্ষেত্রে, আমরা ঘোষণা করছি যে সাবভিউয়ের বাম প্রান্তটি সুপারভিউয়ের বাম প্রান্তে প্রান্তিক হওয়া উচিত।

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

  1. প্রথম আইটেম (চেক), দ্বিতীয় আইটেম (আনচেক): এই ক্ষেত্রে, আমরা ঘোষণা করছি যে সাবভিউয়ের বাম মার্জিনটি সুপারভিউয়ের বাম প্রান্তে প্রান্তিক হওয়া উচিত। এই ধরণের লেআউটটি প্রকৃতপক্ষে পর্যবেক্ষণটিকে ওভারল্যাপ করে।

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

  1. প্রথম আইটেম (চেক), দ্বিতীয় আইটেম (চেক)। এটি প্রকৃতপক্ষে কেস 2 এর মতো একই প্রভাব ফেলছে, যেহেতু সাবভিউ এবং সুপারভিউ উভয়েরই একই ডিফল্ট মার্জিন রয়েছে। আমরা ঘোষণা করছি যে সাবভিউয়ের বাম মার্জিনটি সুপারভাইজারের বাম মার্জিনে প্রান্তিক হওয়া উচিত।

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

মার্জিন সম্পর্কে ভাল কি

আপনি যদি মার্জিন ব্যবহারের সিদ্ধান্ত নেন তবে এই নতুন বৈশিষ্ট্যটি (আইওএস 8) কেবলমাত্র ইউআই বিকাশকে প্রভাবিত করবে।

মার্জিন ব্যবহার করে আপনি একাধিক সাবভিউয়ের স্থান নির্ধারণ করতে পারেন যা একটি একক সম্পত্তির মান পরিবর্তন করে একটি ভাগ করা তদারকির সাথে একটি সাধারণ সম্পর্ক ভাগ করে। স্থির মানগুলির সাথে সম্পর্কিত সমস্ত সীমাবদ্ধতা নির্ধারণের ক্ষেত্রে এটি একটি সুস্পষ্ট জয়, কারণ যদি আপনাকে প্রতিটি ব্যবধান আপডেট করার প্রয়োজন হয় তবে প্রতিটি মান একের পর এক পরিবর্তনের পরিবর্তে আপনি একই সাথে একক লাইনের সাথে তত্ত্বাবধানের মার্জিন আপডেট করে সমস্ত প্রাসঙ্গিক স্থান পরিবর্তন করতে পারেন এই মত কোড:

self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);

এই সুবিধাটি চিত্রিত করার জন্য, নিম্নলিখিত ক্ষেত্রে সমস্ত সাবভিউয়ের বাম প্রান্তগুলি তাদের তত্ত্বাবধানের বাম মার্জিনে প্রান্তিক করা আছে। সুতরাং তত্ত্বাবধানের বাম মার্জিন পরিবর্তন করা একই সময়ে সমস্ত সাবভিউগুলিকে প্রভাবিত করবে।

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


বিস্তারিত ব্যাখ্যার জন্য ধন্যবাদ। আমি এটি একটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করছি কারণ এটি সুন্দরভাবে বিষয়গুলি ব্যাখ্যা করে।
ভুমিত মেহতা

ধন্যবাদ @ ভুমিত, আশা করি এই উত্তরটি সাহায্য করবে।
স্কট ঝু

4
"কেন লোকেরা অভিযোগ করছেন আমি কিছুই বুঝতে পারছি না"। ঠিক আছে, সম্ভবত শেষের কোনও একটি বেতার সাথে আচরণটি বদলেছে, আমি চেক করি নি। তবে কমপক্ষে কয়েক মাস আগে, আপনি কোডটিতে লেআউটমার্গিন সেট করার চেষ্টা না করলেও এটি ক্রাশের কারণ হয়ে দাঁড়ায়।
কেপিএম

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

আমি লক্ষ করেছি যে ছবিগুলি ড্রপবক্সে হোস্ট করা হয়েছে। SO তে ছবিগুলি হোস্ট করা ভাল না?
পরীক্ষা

63

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

কখন এটি ব্যবহার করবেন: আপনি যখন এই নতুন নমনীয়তার সুযোগ নিতে চান।

কখন এটি ব্যবহার করবেন না: যে কোনও অ্যাপ্লিকেশনটির জন্য আইওএস 7 বা নীচে চালানো লক্ষ্যযুক্ত।


21
এটি একটি দুর্দান্ত বৈশিষ্ট্য হবে যদি এটি ডিফল্টরূপে সক্ষম না করা হয় এবং এখনও আইওএস ৮ এর আগে কোনও কিছুর উপর সরাসরি ক্র্যাশ
ঘটায়

1
আরও একমত হতে পারে না।
কেপিএম

42

UIView উপর সম্পত্তি হল: layoutMargins। দেখুন অ্যাপল ডক্স । মূলত যদি বিন্যাসের মার্জিন 8,8,8,8 (ডিফল্ট) হয় তবে 0 কন্টেইনার মার্জিনের সাথে अग्रणी স্থান সহ একটি সীমাবদ্ধতার 8 এর অবস্থান থাকবে 8 নোট করুন যে এটি কেবল iOS8 বা তার পরে উপলব্ধ।

প্রত্যেকের জন্য যারা তাদের সীমাবদ্ধতাগুলি ধারক মার্জিনে যেতে চান না:

সীমাবদ্ধতা তৈরির পপআপ দেখাতে CTRL + ক্লিক করুন + টানুন drag

যদি মেনুটি ডিফল্টরূপে মার্জিনে সীমাবদ্ধতা তৈরি করতে দেখায়, তবে ধারক মার্জিনটি না করে পাত্রে সীমাবদ্ধতা তৈরি করতে অনুমতি দিতে বিকল্প / Alt চেপে ধরে রাখুন।

এখন এটি মার্জিনের প্রতিবন্ধকতা তৈরি করার বিকল্পটি প্রদর্শন করবে। এই উপায় দ্রুত আমার ব্যবহার।


3
এটি সম্ভবত আমি খুঁজে পেয়েছি সেরা সমাধান। "কনস্টেন্ট টু মার্জিন" আনচেকিং সবসময় কাজ করে না এবং কিছুটা যাদুকর অনুভব করে। এটি নিখুঁত।
লেভি ম্যাককালাম

কেন পৃথিবীতে ডিফল্ট 10pt নয়?
জ্যাব্ল্যাঙ্ক

11
অ্যাপলের ব্যবহারযোগ্যতা গবেষণার ভিত্তিতে দৈর্ঘ্য এবং মাপগুলি বেছে নেওয়ার ইতিহাস রয়েছে, আমরা যারা কোড পড়ি তারা পছন্দ করতে পারে এমন সংখ্যা বাছাই করে নয়। উদাহরণস্বরূপ অনেক কিছুর জন্য ডিফল্ট উচ্চতা 44 বা 35 pt। @ জ্যাব্ল্যাঞ্চ
কাইল রবসন

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