2009-12-01 16 views
7

मेरे पास UIViewController का उप-वर्ग है जो UIView को संभालता है। व्यू कंट्रोलर को सामान्य रूप से प्रस्तुत किया जाता है (यह स्क्रीन के नीचे से स्लाइड करता है)। दृश्य के शीर्ष पर, मैंने एक नेविगेशन बार जोड़ा है। ध्यान दें कि इस बार को नेविगेशन नियंत्रक द्वारा नियंत्रित नहीं किया जाता है।रोटेशन पर UINavigationBar का आकार बदलना

जब दृश्य दृश्य परिदृश्य में घूमता है तो मैं ऊंचाई में सिकुड़ने के लिए navbar प्राप्त करना चाहता हूं (जैसा कि यह UINavigationController द्वारा संभाला जाता है) के समान होता है। हालांकि, मैं आईबी में अपनी ऑटोरेसाइजिंग मास्क को लचीली ऊंचाई पर सेट नहीं कर सकता, और कोड में ऐसा करने से नवाबार पूरी तरह से गायब हो जाता है।

क्या ऐसा करने का कोई तरीका है? यह UINavigationController द्वारा कैसे किया जाता है?

पीएस मैं स्केलिंग ट्रांसफॉर्म का सहारा लेना पसंद नहीं करूंगा, क्योंकि यह शीर्षक में पाठ को गड़बड़ कर देगा।

संपादित करें: मैंने इसे थोड़ी मदद से हल किया, नीचे दिए गए उत्तर को पढ़ें।

उत्तर

1

मुझे समाधान मिला, और अंत में मैं बेवकूफ महसूस करता हूं। मुझे बस नेबर के ऑटोरेसाइज मास्क में लचीली तल मार्जिन शामिल करना पड़ा। क्रेडिट इस सूत्र में उपयोगकर्ता RayNewbie, जो मुझे समाधान की ओर इशारा किया की वजह से है:

http://discussions.apple.com/thread.jspa?messageID=8295525

+0

हाय, क्या आपके पास navbar पर बटन हैं? 'क्योंकि मेरे पास एक ही समस्या है और, यदि मैं नेविबार के ऑटोरेसाइज़ मास्क में लचीली तल मार्जिन शामिल करता हूं, तो navbar का आकार बदलता है, लेकिन बटन नहीं। – Sefran2

+0

navBar.autoresizesSubviews = YES; को जोड़ने के लिए सुनिश्चित करें, और आपको अपने नेविबार बटन –

+1

के लिए ऑटोरेसेजिंगमास्क सेट करने की भी आवश्यकता हो सकती है। क्या आप अपना समाधान पोस्ट करेंगे। आपके द्वारा प्रदान किया गया लिंक टूटा हुआ है। – DCorrigan

5

इसके ऑटोरेसाइजिंग मास्क को सेट करने के बजाय, आप केवल विज़िट विल्लएपियर में वर्तमान अभिविन्यास की जांच क्यों नहीं करते हैं, साथ ही साथ didRotateFromInterfaceOrientation में, और उपयुक्त फ्रेम सेट करते हैं?

- (void) updateNavBar { 
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
    if ((UIInterfaceOrientationLandscapeLeft == orientation) || 
     (UIInterfaceOrientationLandscapeRight == orientation)) { 
     myNavBar.frame = CGRectMake(0, 0, 480, 34); 
    } else { 
     myNavBar.frame = CGRectMake(0, 0, 320, 44); 
    } 
} 
- (void) viewWillAppear { 
    [self updateNavBar]; 
    // ... SNIP ... 
} 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    [self updateNavBar]; 
    // ... SNIP ... 
} 
+0

मैं इसे एक कोशिश दे दी है, लेकिन यह जिस तरह से मैं इसे करना चाहता था व्यवहार नहीं किया। अधिक विशेष रूप से, बार बटन आइटम और शीर्षक स्केल नहीं किया गया था, इसलिए शीर्ष स्क्रीन बंद हो गई। इसके अलावा, एनवी बार वास्तव में वास्तव में पैमाने पर नहीं था, इसलिए ढाल बंद था। मैं सबव्यू के कुछ मैन्युअल आकार बदलने का प्रयास करूंगा, और देख सकता हूं कि यह काम करता है ... –

+0

मैंने उप-दृश्य के विभिन्न प्रकारों के परिवर्तनों का उपयोग करने की कोशिश की, लेकिन मैं इसे अच्छे लगने के लिए नहीं मिला। –

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