IOS7 में शुरू, व्यू कंट्रोलर डिफ़ॉल्ट रूप से फुल-स्क्रीन लेआउट का उपयोग करते हैं। उसी समय, आपके पास इस बात पर अधिक नियंत्रण होता है कि वह अपने विचारों को किस प्रकार प्रस्तुत करता है, और यह उन गुणों के साथ किया जाता है:
edgesForExtendedLayout
मूल रूप से, इस संपत्ति के साथ आप सेट करते हैं कि आपके दृश्य के किन पक्षों को पूरे स्क्रीन को कवर करने के लिए बढ़ाया जा सकता है। कल्पना करें कि आप एक UIViewController
में धक्का देते हैं UINavigationController
। जब उस दृश्य नियंत्रक का दृश्य बाहर रखा जाता है, तो वह शुरू हो जाएगा जहां नेविगेशन बार समाप्त होता है, लेकिन यह गुण सेट करेगा कि दृश्य के शीर्ष (ऊपर, बाएं, नीचे, दाएं) को पूरे स्क्रीन को भरने के लिए बढ़ाया जा सकता है।
इसे एक उदाहरण के साथ देखते हैं:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
यहां आप मान सेट नहीं कर रहे हैं edgesForExtendedLayout
, इसलिए डिफ़ॉल्ट मान लिया गया है ( UIRectEdgeAll
), इसलिए दृश्य पूरे स्क्रीन को भरने के लिए इसके लेआउट का विस्तार करता है।
यह परिणाम है:
जैसा कि आप देख सकते हैं, लाल पृष्ठभूमि नेविगेशन बार और स्टेटस बार के पीछे फैली हुई है।
अब, आप उस मान को सेट करने जा रहे हैं UIRectEdgeNone
, इसलिए आप स्क्रीन को कवर करने के लिए दृश्य को न बढ़ाने के लिए व्यू कंट्रोलर को बता रहे हैं:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
और परिणाम:
automaticallyAdjustsScrollViewInsets
इस संपत्ति का उपयोग तब किया जाता है जब आपका दृष्टिकोण एक जैसा UIScrollView
या समान होता है, जैसे UITableView
। आप चाहते हैं कि आपकी तालिका प्रारंभ हो जाए जहां नेविगेशन बार समाप्त हो जाए, क्योंकि आप पूरी सामग्री को नहीं देखेंगे या नहीं, लेकिन साथ ही आप चाहते हैं कि आपकी तालिका स्क्रॉल करते समय पूरी स्क्रीन को कवर करे। उस स्थिति में, edgesForExtendedLayout
कोई भी काम करने से काम नहीं चलेगा क्योंकि आपकी तालिका स्क्रॉल करना शुरू कर देगी जहां नेविगेशन बार समाप्त होता है और यह इसके पीछे नहीं जाएगा।
यह वह जगह है जहां यह संपत्ति काम में आती है, यदि आप व्यू कंट्रोलर को स्वचालित रूप से इनसेट्स को समायोजित करने देते हैं (इस प्रॉपर्टी को YES, यह भी डिफॉल्ट वैल्यू पर सेट करें) यह इनसेट्स को टेबल के ऊपर जोड़ देगा, इसलिए टेबल जहां से शुरू होगी, वहां नेविगेशन बार समाप्त होता है, लेकिन स्क्रॉल पूरे स्क्रीन को कवर करेगा।
यह तब होता है जब NO पर सेट किया जाता है:
और हाँ (डिफ़ॉल्ट रूप से):
दोनों ही मामलों में, तालिका नेविगेशन बार के पीछे स्क्रॉल करती है, लेकिन दूसरे मामले (YES) में, यह नेविगेशन बार के नीचे से शुरू होगी।
extendedLayoutIncludesOpaqueBars
यह मान पिछले वाले का एक जोड़ है। डिफ़ॉल्ट रूप से, यह पैरामीटर NO पर सेट है। यदि स्थिति पट्टी अपारदर्शी है, विचारों भले ही आप इसे (कवर करने के लिए आपके विचार का विस्तार स्थिति पट्टी में शामिल करने के लिए बढ़ाया नहीं किया जाएगा, edgesForExtendedLayout
करने के लिए UIRectEdgeAll
)।
यदि आप YES के लिए मान सेट करते हैं, तो यह दृश्य को फिर से स्टेटस बार के नीचे जाने की अनुमति देगा।
यदि कुछ स्पष्ट नहीं है, तो एक टिप्पणी लिखें और मैं इसका उत्तर दूंगा।
IOS कैसे जानता है कि UIScrollView का उपयोग क्या है?
iOS आपके ViewController के पहले सबव्यू को पकड़ लेता है, जो कि इंडेक्स 0 पर होता है, और अगर यह सबक्लास है, UIScrollView
तो इसके लिए समझाया गया गुण लागू करता है।
बेशक, इसका मतलब यह है कि UITableViewController
डिफ़ॉल्ट रूप से काम करता है (चूंकि UITableView
यह पहला दृश्य है)।