ইন্টার্কেস বিল্ডার / xib / nib প্রোগ্রামক্রমে বনাম মুখোশগুলি স্বয়ংক্রিয়করণ


216

আমি একটি (সম্ভবত মিথ্যা) অনুমানের মধ্যে ছিলাম যে xib এ ডান মার্জিন সূচক সক্ষম করা UIViewAutoresizingFlexibleLeftMarginঅভ্যন্তরীণ কোড এবং এরকম ব্যবহারের সমতুল্য ।

সুতরাং, আমি এই স্ন্যাপশট অনুযায়ী চিন্তা করতাম: এখানে চিত্র বর্ণনা লিখুন

পরে আজ আমাকে চেক ক্রস করতে হয়েছিল এবং এই থ্রেডে হোঁচট খেয়েছি

এবং এই অ্যাপল ডকুমেন্টেশন, শিরোনাম সহ বিভাগটির সাথে শিরোনাম - এই লিঙ্কটিতে "হ্যান্ডলিং লেআউটগুলি স্বয়ংক্রিয়ভাবে নিয়ন্ত্রনবিধি ব্যবহার করে পরিবর্তনগুলি পরিবর্তন করা হয়": https://developer.apple.com/library/content/docamentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/ CreatingViews.html

সুতরাং এখন আমার মনে নতুনভাবে ধারণা রয়েছে যে কীভাবে প্রোগ্রামিকভাবে অটোরিসাইজিং মাস্কগুলি সেট করা xib সেটিংসের সমতুল্য হবে:

দৃশ্য 1 : কেবল সেট (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)করা সমান:

(ইউআইভিউঅটোরাইজিংফ্লেক্সিব্লুথ | ইউআইভিউঅটোরাইজিংফ্লেক্সিব্লাইটহাইট)

একাদশে?

দৃশ্য 2 : (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)কোডে সেট করা সমান:

(ইউআইভিউঅটোরাইজিংফ্লেক্সিওয়েথ

একাদশে?

আমার 2 পুনর্নবীকরণের পরিস্থিতিগুলি কি সঠিক? আমি কি এখনই আমার বোঝার মধ্যে আছি?


3
তুমি আমার সাথে মজা করছো? তবে মনে হয় যেখানে আমার বিভ্রান্তিও রয়েছে। সুতরাং আমি যদি শীর্ষে আলিঙ্গন করতে চাই তবে আমি নীচেরটি অটোরেসাইজ চালু করব। ভাল কাজ আপেল। এটি আমার দেখা সবচেয়ে বোকামি সেটআপ।
user4951

1
আপনি যদি শীর্ষে আলিঙ্গন করতে চান তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি বিট মাস্ক কোডে ইউআইভিউআউটোরিজাইজিং ফ্লেক্সিবলটপমার্গিনের উল্লেখ করবেন না। আমার আগের অনুমানটি ভুল ছিল এবং কেন আমি এই প্রশ্নটি পোস্ট সাফ করার জন্য পোস্ট করেছি ts
রাজ পবন গমডাল

আপনার অনুমানটি সঠিক। কোথায় ভুল করছেন?
user4951

হ্যাঁ, আপনি যে দুটি পরিস্থিতিতে উদ্ধৃত করেছেন তা সঠিক।

3
আমি এটির জন্য একটি সাধারণ সরঞ্জাম তৈরি করেছি: erkanyildiz.me/lab/autoresizingmask আপনি এটি ব্যবহার করতে পারেন।
এরকানাইল্ডিজ

উত্তর:


35

হ্যাঁ, ইন্টারফেস বিল্ডারের একটি অর্থে এটি "বিপরীত" হয়েছে (বা ইউআইভিউ, আপনি এটি কীভাবে দেখেন তার উপর নির্ভর করে)। আপনার উদ্ধৃত "পরিস্থিতি" সঠিক।


47

হ্যাঁ, আপনি জিনিসগুলি সঠিকভাবে উদ্ধৃত করেছেন। এছাড়াও, আমি সম্মত হই যে এটি কিছুটা পিছন দিকে অনুভূত হয়, সেই কারণেই আমি আপনার পোস্টটির প্রশংসা করি।

UIViewAutoresizingFlexibleMarginsইউআইভিউ-র মার্জিনটি প্রতিটি দিকে নমনীয় করার সময় আপনি প্রিপ্রসেসর ম্যাক্রো ব্যবহার করতে পছন্দ করতে পারেন । আমি এটিকে পূর্বনির্ধারিত শিরোলেখ ফাইলটিতে রেখেছি যাতে এটি সর্বত্র অন্তর্ভুক্ত হয়।

#define UIViewAutoresizingFlexibleMargins                 \
              UIViewAutoresizingFlexibleBottomMargin    | \
              UIViewAutoresizingFlexibleLeftMargin      | \
              UIViewAutoresizingFlexibleRightMargin     | \
              UIViewAutoresizingFlexibleTopMargin

ব্যবহারের UIViewAutoresizingFlexibleMarginsফলে একটি ইউআই এলিমেন্টকে কেন্দ্রীভূত করা হবে কারণ এটি কোনও একদিকে জড়িয়ে থাকবে না। উপাদানটিকে তার পিতামাতার সাথে বাড়ানো / সঙ্কুচিত করতে যথাক্রমে UIViewAutoresizingFlexibleWidthএবং সেট করুন UIViewAutoresizingFlexibleHeight

আমি ব্যবহার UIViewAutoresizingFlexibleMarginsকরতে পছন্দ করি কারণ আমি পরে এটির মতো উল্লেখ করতে পারি:

myView.autoresizingMask = UIViewAutoresizingFlexibleMargins;

পরিবর্তে

myView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;

সর্বোপরি আমি উপরের উদাহরণের মতো এক লাইনে এই মার্জিনগুলি একত্রে দেখতে পেয়েছি। পড়া ঠিক


4
প্রতিটি দিকের মধ্যে নমনীয় হওয়া উচিত (ইউআইভিউআউটোরিজাইজিং ফ্লেক্সিব্লিউডথ | ইউআইভিউআউটরেসাইজিং ফ্লেক্সিবল হাইট) আমার ধারণা? নাকি আমি আবার বিভ্রান্ত!
রাজ পবন গমদল

4
ফ্লেক্সিবিলমার্জিনস উপাদানটিকে কেন্দ্রিক করে রাখবে (বাম, উপরের, ডান বা নীচের দিকে মার্জিন নয়)। নমনীয় প্রস্থ / উচ্চতা ইউআই উপাদানকে যথাক্রমে বৃদ্ধি / সঙ্কুচিত করে তুলবে।
স্যাম

4
সব কি এখন পরিষ্কার? এছাড়াও, আমি যখন বলেছিলাম আমি আপনার পোস্টটির প্রশংসা করেছি তখন সত্যই আমি এটি বোঝাতে চাইছিলাম। আমি আসলে এটি পছন্দ করেছি খ / সি এটি অতীতে আমাকে বিভ্রান্ত করেছে। আমি মনে করি এটি একটি দুর্দান্ত প্রশ্ন
স্যাম

3
হ্যাঁ, ধন্যবাদ, এখন আমি এটি পেয়েছি, "নমনীয় মার্জিন" এবং "নমনীয় প্রস্থ / উচ্চতা"। এটি সমস্ত কিছু ব্যাখ্যা করে এবং আপনার "বাম, উপরের, ডান বা নীচের মার্জিনকে আলিঙ্গন না করা" এটি ব্যাখ্যা করার একটি ভাল উপায় :)
রাজ পবন গমদল

0

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

বাক্সের অভ্যন্তরে উল্লম্ব / অনুভূমিক তীর (বসন্ত নামে পরিচিত) সক্ষম করা উচ্চতা / প্রস্থকে নমনীয় করে তুলবে। তবে বাইরের লাইনটি (স্ট্রুট নামে পরিচিত) সক্ষম করা সেই দিকটিকে জটিল / অ-নমনীয় করে তুলবে।

বাইরের বাম লাইনটি (বাম স্ট্রুট) সক্ষম করা সক্ষম করার সমতুল্য নয় UIViewAutoresizingFlexibleRightMargin। পরিবর্তে, UIViewAutoresizingFlexibleRightMargin= উপর ডান ভাররক্ষা অক্ষম হলে, বন্ধ করে ডান ভাররক্ষা সক্ষম করা হয়েছে।

এটি প্রথমে বেশ বিভ্রান্তিকর, তবে আপনি যদি ঘনিষ্ঠভাবে দেখতে পান তবে স্প্রিংস এবং স্ট্রুটগুলির মধ্যে একটি পার্থক্য রয়েছে। অ্যাপল কেন এটি করেছে তা আমি জানি না, তবে আমার জন্য এমন কিছু ঘটনা ছিল যেখানে এটি ব্যবহার করা সহজ ছিল। কোডে বিপরীত বৈশিষ্ট্য ব্যবহার করা আরও বিভ্রান্তিকর।


0

সুইফট 4 এটি ব্যবহার করুন

gadBannerView?.autoresizingMask = [.flexibleRightMargin  , .flexibleLeftMargin , .flexibleTopMargin , .flexibleBottomMargin]

উদ্দেশ্য গ

myView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.