2011-10-18 11 views
5

मेरे पास कई UIViewControllers हैं, जो UINavigationController के माध्यम से लोड किए गए हैं, जहां मैं loadView को ओवरराइड करता हूं, और प्रदर्शित करने के लिए कस्टम दृश्य सेट करता हूं। मुझे कुछ सबव्यूज़ के फ्रेम सेट करने में समस्याएं आ रही हैं, और शायद स्वयं ही दृश्य। मुझे लगता है कि या तो UINavigationController या UIViewController प्रदर्शित होने पर स्क्रीन को भरने के लिए इसके दृश्य को मजबूर करने में सक्षम है।क्या UIViewController या UINavigationController ने इसके दृश्य का आकार निर्धारित किया है?

मुझे आश्चर्य है कि दृश्य का आकार कब और/या कब सेट किया गया है। और यदि यह हो रहा है, तो यह दृश्य के फ्रेम को सेट कर रहा है, या इसे एक और तरीका कर रहा है।

धन्यवाद।

अद्यतन:

- (void)loadView 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 10.0f, 10.0f)]; 
    [view setBackgroundColor:[UIColor redColor]]; 
    self.view = view; 
    [view release]; 
} 

मैं स्थिति के लिए छोड़कर, पूरे स्क्रीन को ले जा रही एक लाल दृश्य प्राप्त: मैं सिर्फ इस के माध्यम से काम करते हुए देखा है कि मैं इस loadView विधि के साथ एक नया UINavigationController बनाने के लिए, है बार और हेडर। स्क्रीन को भरने के लिए मेरा विचार कब आकार बदलता है? दृश्य बनाने के दौरान मुझे किस आकार का उपयोग करना चाहिए?

उत्तर

3

UIViewControllers के लिए फ्रेमस्पेस छोटा हो जाता है, क्योंकि UINavigationControllerUINavigationBar जोड़कर दृश्य को मैनिपुलेट करता है, जो आकार में 44.0f है।

यह आकार बदल जाता है क्योंकि आप self.view = view; के साथ दृश्य को प्रतिस्थापित करते हैं यदि आप addSubview: का उपयोग करते हैं तो यह इसके मूल आकार को रोकता। logancautrell कब और क्यों समझाया।

+0

स्पष्टीकरण के लिए धन्यवाद। दृश्य नियंत्रकों लोडव्यू में अपना दृश्य लोड करते समय, जब एक UINavigationController के माध्यम से धक्का दिया जाता है, तो क्या मुझे फ्रेम को CGRectMake (0.0, 0.0, 320.0, 416.0) के रूप में सेट करने की आवश्यकता है? जैसा कि मुझे UINavigationBar या स्टेटस बार के लिए फ्रेम मूल y समन्वय में क्षतिपूर्ति करने की आवश्यकता नहीं है? – Ryan

+0

नवाबार का निचला भाग एक्स कंट्रोलर के लिए नया एक्स, वाई मूल बन जाता है, आपको केवल समायोजित ऊंचाई की भरपाई करने की आवश्यकता होती है। आयामों के बारे में सुनिश्चित करने के लिए 'NSLog (@" wxh =% fx% f ", self.view.frame.size.width, self.view.frame.size.height);' – Wolfert

+0

धन्यवाद, जो इसे स्पष्ट करता है मेरे लिए। मैं अभी भी सोच रहा हूं कि दृश्य कब बदलता है। क्योंकि अगर मैं लोड आकार में गलत आकार सेट करता हूं तो भी यह सही आकार के रूप में बदल जाता है। मैं आपको जवाब दूंगा, क्योंकि यह मुझे जाता है। एक बार फिर धन्यवाद। – Ryan

9

UINavigationController धक्का दिए जाने पर स्वचालित रूप से व्यू कंट्रोलर के दृश्य को आकार देगा।

pushViewController: एनिमेटेड:

ViewController पैरामीटर में वस्तु नेविगेशन ढेर पर शीर्ष दृश्य नियंत्रक हो जाता है डॉक्स से। व्यू कंट्रोलर परिणामों को उस दृश्य के प्रदर्शन में दबाकर देखें जो इसे प्रबंधित करता है। यह दृश्य कैसे प्रदर्शित होता है एनिमेटेड पैरामीटर द्वारा निर्धारित किया जाता है। यदि एनिमेटेड पैरामीटर हाँ है, तो दृश्य स्थिति में एनिमेटेड है; अन्यथा, दृश्य बस जगह में प्रदर्शित होता है। दृश्य प्रदर्शित होने से पहले नेविगेशन बार और टूलबार (यदि मौजूद है) के बीच फिट करने के लिए दृश्य का स्वचालित रूप से आकार बदल दिया जाता है।

यदि आप एक छोटा दृश्य प्रदर्शित करना चाहते हैं तो आपको एक कंटेनर बनाना होगा और इसे मैन्युअल रूप से आकार सेट करने, अपने वीसी के दृश्य का एक बच्चा बनाना होगा। दृश्य बनाने के तरीके के आधार पर ऑटोरेसाइज़ मास्क को ठीक से सेट करना पड़ सकता है।

+0

धन्यवाद, यह दस्तावेज मैंने एक बार पढ़ा होगा, लेकिन यह भूल गया कि मैं इसे कहां/कहां पढ़ता हूं। – Ryan

+2

क्या पुश ऑपरेशन के बाद अपने बच्चे के दृश्य नियंत्रक के आकार को समायोजित करने के लिए नेविगेशन नियंत्रक को मजबूर करने का कोई तरीका है? मैं नेविगेशन नियंत्रक की ऊंचाई बदल रहा हूं लेकिन यह किसी कारण से स्वचालित रूप से अपनी सामग्री को समायोजित नहीं कर रहा है। – devios1

+0

मैं एक समस्या भी देख रहा हूं जहां नेविगेशन नियंत्रक संक्रमण के दौरान डिवाइस को घुमाते समय अपने बच्चे के दृश्य नियंत्रक के आकार का आकार बदल नहीं रहा है। – AdamPro13

संबंधित मुद्दे