2011-08-03 10 views
7

मैं एक विन्यास UITableView है कि एक UINavigationController दृष्टिकोण के माध्यम से एक रंग पिकर का शुभारंभ कर सकते हैं:self.bounds.size.height इस कोड में UINavigationView Nav बार क्यों नहीं ले रहा है?

[self.navigationController pushViewController:colorPickerViewController animated:YES]; 
[colorPickerViewController release]; 

इस के प्रभाव का मतलब है ColourPicker एक नेविगेशन शीर्ष पर (और वापस बटन)

The Bar होगा ColourPickerViewControll की संरचना और इसे देखने के ColourPickerView इस प्रकार है:

- ColourPickerViewController - in it's XIB file at the top level view it has: 
    - ColorPickerView : UIView (i.e. custom UI view) - in it's methods it has: 
    - (id)initWithCoder:(NSCoder*)coder { 
     if ((self = [super initWithCoder:coder])) { 
     CGFloat currVertBounds = self.bounds.size.height; 

यहां मुद्दा यह है currVertBounds का मूल्य 480 के लिए आ रहा है, तो यह खाता ओ नहीं ले रही है एफ नेविगेशन बार

प्रश्न: मैं ColorPickerView इंस्टेंस की वास्तविक प्रदर्शित ऊंचाई कैसे प्राप्त करूं?

क्या यह कस्टम UIView में लेआउट की गणना करने की कोशिश करने के साथ कुछ करना है, और शायद उस दृश्य में कस्टम नियंत्रण/नियंत्रण नियंत्रक के भीतर कस्टम दृश्य प्रस्तुत नहीं किया गया है?

+0

आप नेविगेशन बार या एनटी की ऊंचाई बदलना चाहते हैं। – ram

उत्तर

7

आप bounds बहुत जल्दी पढ़ रहे हैं। UIKit में होने वाले लेआउट/सबव्यूइंग जादू में से कोई भी [super initWithCoder:] के दौरान होगा।

  1. viewDidLoad/viewWillAppear में, और सभी मैन्युअल रूप से बनाई गई UI तत्व तो वे अलग इंटरफेस झुकाव के संबंध में चारों ओर ले जाया प्राप्त कर सकते हैं के लिए स्वत: आकार बदलना पैरामीटर सेट: आप bounds पढ़ रहे हैं और या तो आपके विचार बिछाने होना चाहिए। इन कार्यों में मैं bounds पर बिल्कुल सही नहीं होने पर भरोसा करता हूं लेकिन मैं कहूंगा कि यह कम से कम सही ऊंचाई है: चौड़ाई अनुपात। यह संभवतः गलत अभिविन्यास में हो सकता है, हालांकि।
  2. viewDidAppear में, यदि आप मैन्युअल रूप से तत्वों को स्थानांतरित करना चाहते हैं। जब तक आप viewDidAppear हिट करते हैं तो सभी आकार बदलते हैं और ऐसा हुआ है, और भविष्य में घूर्णन के बारे में चिंता करने के लिए केवल एक चीज बाकी है, जिसे आपको willAnimateRotationToInterfaceOrientation:duration: में अपना दृश्य समायोजित करना चाहिए।willAnimateRotationToInterfaceOrientation:duration: राज्य पर

डॉक्स:

समय इस विधि कहा जाता है के द्वारा, interfaceOrientation संपत्ति पहले से ही नए उन्मुखीकरण को तैयार है। इस प्रकार, आप इस विधि में अपने विचारों के अनुसार आवश्यक कोई अतिरिक्त लेआउट कर सकते हैं।

iOS 5.0 डॉक्स खंड जोड़ें:

... नई उन्मुखीकरण करने के लिए सेट है, और दृश्य की सीमाएँ बदल दिया गया है। इस प्रकार ...

मुझे लगता है कि यह अभी भी पूर्व आईओएस संस्करणों के मामले में है।

0

हाँ, यह सही है क्योंकि UINavigationController का उदाहरण आपके (delegate.h) में घोषित किया जाता है है & कि navigationBar अपने self.view पर नहीं खिड़की में जोड़ा जाता है

आप की सीमा की जांच करते हैं आपका वर्तमान दृश्य, यह निश्चित रूप से 320 * 480 लौटाएगा। इसमें आपके द्वारा नेविगेशन बार की ऊंचाई शामिल नहीं होनी चाहिए, क्योंकि यह उस दृश्य पर नहीं है। खिड़की पर

1

आईफ़ोन के लिए दृश्य परिभाषा के अनुसार इंटरफ़ेस बिल्डर में बनाए गए 480 पिक्सेल की ऊंचाई होगी, इसलिए जब आप दृश्य को प्रारंभ कर रहे हों तो आप यही देख रहे हैं। एक बार दृश्य को ठीक से शुरू किया गया है और दृश्य स्टैक में जोड़ा गया है, तो इसका उपयोग वास्तविक स्थान से मेल खाने के लिए किया जाएगा।

आप इसे समायोजित करने से पहले बस इसकी ऊंचाई के दृश्य पूछ रहे हैं। viewDidLoad में ऊंचाई पढ़ने का प्रयास करें, तो यह सही होना चाहिए।

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