2010-07-27 13 views
5

मेरा ऐप का रूट व्यू कंट्रोलर किसी भी अभिविन्यास का समर्थन करता है लेकिन उपयोगकर्ता किसी अन्य व्यू कंट्रोलर पर नेविगेट कर सकता है जो केवल लैंडस्केप ओरिएंटेशन का समर्थन करता है।आईफोन नेविगेशन बार ऊंचाई पोर्ट्रेट ओरिएंटेशन में कम रहता है

मूल समस्या यह है कि डिवाइस के वास्तविक भौतिक अभिविन्यास के बावजूद, जब उपयोगकर्ता रूट व्यू कंट्रोलर पर वापस आ जाता है, तो नेविगेशन बार की ऊंचाई ऊंचाई होती है जो लैंडस्केप मोड के लिए उपयुक्त होगी। मैं यह जानना चाहता हूं कि नेविगेशन बार को 32 (लैंडस्केप ऊंचाई) की बजाय 44 (पोर्ट्रेट ऊंचाई) की ऊंचाई के साथ कैसे दिखाना है।

हालांकि नेविगेशन बार उचित ऊंचाई पर सेट नहीं है, रूट व्यू कंट्रोलर का UITableView सही ढंग से ऑफसेट है (स्क्रीन के शीर्ष से 44 पिक्सल)।

दूसरे दृश्य नियंत्रक के -viewWillAppear के अंदर: मैं प्रदर्शन मानक घूर्णी परिणत:

if (deviceOrientation == UIDeviceOrientationPortrait) 
    { 
    UIScreen *screen = [UIScreen mainScreen]; 
    CGFloat screenWidth = screen.bounds.size.width; 
    CGFloat screenHeight = screen.bounds.size.height; 
    UIView *navView = [[self navigationController] view]; 
    navView.bounds = CGRectMake(0, 0, screenHeight, screenWidth); 
    navView.transform = CGAffineTransformIdentity; 
    navView.transform = CGAffineTransformMakeRotation(degreesToRadians(90)); 
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0); 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]; 
    } 

इस माध्यमिक दृश्य नियंत्रक अधीनस्थ दृश्य नियंत्रकों के लिए नेविगेशन की अनुमति देता है क्योंकि (और साथ ही वापस रूट दृश्य नियंत्रक करने के लिए पॉपिंग), कैसे नेविगेशन पट्टी ऊंचाई की पुनर्गणना के लिए मजबूर करने पर किसी भी सलाह के लिए

if (deviceOrientation == UIDeviceOrientationPortrait) 
    { 
    UIScreen *screen = [UIScreen mainScreen]; 
    CGFloat screenWidth = screen.bounds.size.width; 
    CGFloat screenHeight = screen.bounds.size.height; 
    UIView *navView = [[self navigationController] view]; 
    navView.bounds = CGRectMake(0, 0, screenWidth, screenHeight); 
    navView.transform = CGAffineTransformIdentity; 
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0); 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]; 
    } 

धन्यवाद: मैं -viewWillDisappear के लिए निम्न जोड़ लिया है।

उत्तर

8

सुनिश्चित नहीं हैं कि क्या कोई बेहतर तरीका है, लेकिन यह काम किया:

[[self navigationController] setNavigationBarHidden:YES animated:NO]; 
[[self navigationController] popViewControllerAnimated:YES]; 
[[self navigationController] setNavigationBarHidden:NO animated:NO]; 

असल में, नेविगेशन बार छुपाने के लिए, दृश्य नियंत्रक और शो नेविगेशन बार पॉप। कुछ कोड कहीं भी नेविगेशन बार ऊंचाई और सब कुछ ठीक समायोजित करता है।

+0

धन्यवाद बिल्कुल सही, मैं आईओएस 6 – AlexWien

+0

में फिर से काम करने के लिए इसे प्राप्त कर सकता हूं IOS10 के बारे में क्या? मुझे इस मुद्दे का सामना करना पड़ा है और समाधान काम नहीं कर रहा है। – Slavcho

+0

@Slavcho। माफ़ कीजिये। मेरे पास जवाब नहीं है। मैं कुछ समय के लिए आईओएस पर काम नहीं कर रहा हूं। – westsider