ক্লিপটোবাউন্ডস কীভাবে কাজ করে?


110

আমি UIViewসম্পত্তিটি কীভাবে ব্যবহার করব তা জানতে চাই clipsToBounds

অফিসিয়াল ডকুমেন্টেশন নিম্নলিখিত বলে:

clipsToBounds সম্পত্তি

একটি বুলিয়ান মান যা সাবউভিউগুলি দেখার সীমানায় সীমাবদ্ধ কিনা তা নির্ধারণ করে।

আলোচনা
এই মানটি সেট করার YESকারণে সাবভিউগুলি রিসিভারের সীমানায় ক্লিপ হয়ে যায়। যদি সেট করা থাকে NO, সাবভিউগুলি যার ফ্রেমগুলি রিসিভারের দৃশ্যমান সীমানা ছাড়িয়ে প্রসারিত হয় তা ক্লিপ করা হয় না। ডিফল্ট মান NO

তবে এর সঠিক অর্থটি সম্পর্কে আমি অস্পষ্ট। আমার কীভাবে ব্যবহার করা উচিত clipsToBounds? এই সম্পত্তিটি ঠিকঠাক করে দেওয়ার ফলাফল কী YES? নাকি NO?

উত্তর:


283

যদি আমার তত্ত্বাবধানটি প্রতিটি পাশের 10 টি ইউনিট পরিমাপের একটি বাক্স এবং আমার সাবভিউটি 20 ইউনিট প্রশস্ত, clipsToBoundsসেট করা আছে YES, তবে আমি কেবল পর্যবেক্ষণের অংশটি দেখতে পাব যা তদারকির সীমানার মধ্যে ফিট করে। অন্যথায়, যদি clipsToBoundsসেট করা থাকে NO, আমি সম্পূর্ণ সাবভিউটি দেখতে পাব, এমনকি সুপারভিউর বাইরের অংশগুলি (ধরে নিই আমরা পর্দায় রয়েছি)।

ভিজ্যুয়াল উদাহরণ হিসাবে স্টোরিবোর্ডে সেট আপ করা নিম্নলিখিত ভিউগুলি বিবেচনা করুন:

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

এটি একটি সাদা UIView, উপরের বাম কোণে একটি সরল "1" বা "2" সহ একটি লেবেল যাতে আমি এগুলি হিসাবে view1বা হিসাবে আলোচনা করতে পারি view2। অতিরিক্তভাবে, কালো দর্শনটি সাদা দর্শন হিসাবে একই আকারের, তবে এটির উত্সটি সাদা দর্শনের কেন্দ্রে।

দেখুন নিয়ন্ত্রকের viewDidLoadপদ্ধতিতে, আমাদের নিম্নলিখিত কোড রয়েছে:

উদ্দেশ্য গ:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view1.clipsToBounds = YES;
    self.view2.clipsToBounds = NO;
}

সুইফট:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view1.clipsToBounds = true
    self.view2.clipsToBounds = false
}

আমরা যখন কোডটি চালনা করি এবং সিমুলেটর বা ডিভাইসে সন্ধান করি তখন আমরা নিম্নলিখিত ফলাফলগুলি পাই:

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

সুতরাং, এই মতামতগুলি অভিন্নভাবে (ব্যতীত clipsToBounds) সেট আপ করা সত্ত্বেও , তারা অন্যরকম দেখাচ্ছে। এটি কি clipsToBoundsকরে। এটিকে সেট করা নীচের ফলাফলটি সরবরাহ YESকরার সময় শীর্ষ ফলাফল NOসরবরাহ করবে।

আমরা যদি ভিউ হায়ারার্কিটি ডিবাগ করি তবে আমরা আরও স্পষ্ট দেখতে পাচ্ছি যে কালো বাক্সগুলি উভয়ই হোয়াইট ভিউয়ের বোর্ডারদের অতীতে প্রসারিত করে তবে অ্যাপ্লিকেশনটি আসলে চলছে কেবলমাত্র 2 টি দেখায়:

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


3
চমত্কার উত্তর! সাবাশ. তবে আমার একটা প্রশ্ন আছে। কেন UITextViewছায়া দৃশ্যমান নয়, clipsToBoundsসম্পত্তি সমান হলে true; ? যদি তা হয় তবে ঠিক falseকাজ করে
ম্যানোপসন

1
দ্রষ্টব্য: এটি ক্লিপটোবাউন্ডগুলি চালু করার জন্য এটি পিতামাতার দৃষ্টিভঙ্গি। সুতরাং ভিউবি যদি ভিউএর একটি সাবভিউ হয়। এটি এমন ভিউ যা ক্লিপটোবাউন্ডসকে সত্য করে তোলা দরকার।
এস্তেসল্যাবস

সেই দৃশ্যে আসল ভিউ ফ্রেমের কোন ভিউ শো হ'ল টোকা অঙ্গভঙ্গি কাজ করছে, কারণ আমি পরীক্ষা করে দেখছি এবং এটি কাজ করছে না।
প্রবীণ টেট

2

এটি একটি সংক্ষিপ্ত দ্রুত উত্তর বনাম বনাম গ্রহণযোগ্য উত্তর হতে বোঝানো হয়েছে

অ্যাপল এই সম্পত্তি নামান্তর করতে ছিল তবে আমি এটির নাম চাই: clipSubviewsToBounds

আমি কেবল আমাদের কোডের একটি বাগের মধ্যে দৌড়েছি। যেখানে প্যারেন্ট ভিউয়ের উচ্চতা সেট করা হয়েছিল 0। আমরা এর উপাদানগুলির কোনওটি দেখতে প্রত্যাশা করেছিলাম। তবুও পিতামাতার দৃশ্যের সামগ্রীগুলি প্রদর্শিত হচ্ছে।

clipToBoundsসেট ছিল না কারণ এটি ছিল true। একবার সেট হয়ে গেলে trueতারপরে সাবউভিউ হাইটগুলি এর চেয়ে বেশি প্রসারিত হতে পারে না 0, তাই তারা এগুলি একেবারেই প্রদর্শন করে না।


এই উত্তরটি পথ রেটপ্রাপ্ত হয়
sasquatch
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.