আইওএস 7-এ শুরু হয়ে ভিউ কন্ট্রোলাররা ডিফল্টরূপে পূর্ণ-স্ক্রীন বিন্যাস ব্যবহার করে। একই সাথে, এটি কীভাবে এর দৃষ্টিভঙ্গি দেয় এবং তার উপরে এই বৈশিষ্ট্যগুলি সম্পন্ন হয় তার উপর আপনার আরও নিয়ন্ত্রণ থাকে:
edgesForExtendedLayout
মূলত, এই সম্পত্তিটি দিয়ে আপনি সেট করেছেন যে আপনার দৃষ্টির কোন দিকগুলি পুরো স্ক্রীনটি কভার করতে প্রসারিত হতে পারে। কল্পনা করুন যে আপনি একটি ধাক্কা UIViewController
একটি মধ্যে UINavigationController
। যখন এই দৃশ্যের নিয়ামকের ভিউটি নির্ধারণ করা হবে তখন নেভিগেশন বারটি যেখানে শেষ হবে তা শুরু হবে, তবে এই সম্পত্তিটি পুরো স্ক্রীনটি পূরণ করার জন্য দর্শনটির কোন দিকগুলি (উপরে, বাম, নীচে, ডানদিকে) প্রসারিত করা হবে তা সেট করে।
এটি একটি উদাহরণ সহ দেখুন:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
এখানে আপনি এর মান নির্ধারণ করছেন না edgesForExtendedLayout
, তাই ডিফল্ট মানটি নেওয়া হয় ( UIRectEdgeAll
), সুতরাং দৃশ্যটি পুরো স্ক্রীনটি পূরণ করার জন্য এর বিন্যাসটিকে প্রসারিত করে।
এটি ফলাফল:
আপনি দেখতে পাচ্ছেন, লাল পটভূমিটি নেভিগেশন বার এবং স্ট্যাটাস বারের পিছনে প্রসারিত।
এখন, আপনি সেই মানটি সেট করতে যাচ্ছেন UIRectEdgeNone
, তাই আপনি পর্দাটি coverাকাতে ভিউ কন্ট্রোলারকে না দেখানোর জন্য বলছেন:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
এবং ফলাফল:
automaticallyAdjustsScrollViewInsets
এই বৈশিষ্ট্যটি ব্যবহার করা হয় যখন আপনার ভিউ UIScrollView
একটির মতো বা অনুরূপ হয় UITableView
। আপনি চান যে আপনার টেবিলটি যেখানে নেভিগেশন বারটি শেষ হবে সেখানে শুরু হওয়া উচিত, কারণ আপনি যদি না চান তবে পুরো সামগ্রীটি দেখতে পাবেন না, তবে একই সাথে আপনি চান যে আপনার টেবিলটি স্ক্রোল করার সময় পুরো স্ক্রিনটি কভার করবে। edgesForExtendedLayout
সেক্ষেত্রে কোনওটিতে সেট করা কাজ করবে না কারণ আপনার টেবিলটি যেখানে নেভিগেশন বারটি শেষ হবে সেখানে স্ক্রোলিং শুরু হবে এবং এটি এর পিছনে যাবে না।
এখানে এই সম্পত্তিটি কাজে আসবে, আপনি যদি নিয়ন্ত্রককে স্বয়ংক্রিয়ভাবে ইনসেটগুলি সামঞ্জস্য করতে দেন (এই সম্পত্তিটি হ্যাঁ, এটি ডিফল্ট মান হিসাবে নির্ধারণ করা হয়) এটি টেবিলের শীর্ষে পোকামাকড় যুক্ত করবে, তাই টেবিলটি শুরু হবে যেখানে নেভিগেশন বার শেষ হয়, তবে স্ক্রোলটি পুরো স্ক্রিনটি কভার করবে।
এটি কখন সেট করা হবে:
এবং হ্যাঁ (ডিফল্টরূপে):
উভয় ক্ষেত্রে, সারণীটি নেভিগেশন বারের পিছনে স্ক্রোল করে, তবে দ্বিতীয় ক্ষেত্রে (হ্যাঁ) এটি নেভিগেশন বারের নীচে থেকে শুরু হবে।
extendedLayoutIncludesOpaqueBars
এই মানটি পূর্বেরগুলির সাথে কেবল একটি সংযোজন। ডিফল্টরূপে, এই পরামিতিটি NO তে সেট করা আছে। যদি স্ট্যাটাস বার অস্বচ্ছ হয়, মতামত এমনকি যদি আপনি এটা (আবরণ আপনার ভিউ প্রসারিত স্ট্যাটাস বার অন্তর্ভুক্ত করা বাড়ানো হবে না, edgesForExtendedLayout
করতে UIRectEdgeAll
)।
আপনি যদি মানটি হ্যাঁ সেট করে থাকেন, এটি দৃশ্যকে আবার স্ট্যাটাস বারের নীচে যেতে দেয়।
যদি কিছু পরিষ্কার না হয় তবে একটি মন্তব্য লিখুন এবং আমি তার উত্তর দেব।
ইউআইএসক্রোলভিউ কী ব্যবহার করবেন তা আইওএস কীভাবে জানতে পারে?
আইওএস আপনার ভিউকন্ট্রোলারের ভিউতে প্রথম সূক্ষ্ম ধারণাটি সূচক 0 তে ধরে রাখে এবং যদি এটির একটি সাবক্লাস থাকে UIScrollView
তবে এতে বর্ণিত বৈশিষ্ট্যগুলি প্রয়োগ করা হয়।
অবশ্যই, এর অর্থ এটি UITableViewController
ডিফল্টরূপে কাজ করে (যেহেতু UITableView
এটি প্রথম দৃষ্টিভঙ্গি)।