19 सितंबर 2013 को अपडेट:
फिक्स्ड स्केलिंग बग को जोड़कर
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
NSNotificationCenter
बयान में सही टाइपो
12 सितंबर 2013 को अपडेट:
को सही UIViewControllerBasedStatusBarAppearance
कियाNO
स्क्रीन रोटेशन के साथ ऐप्स के लिए एक समाधान जोड़ा गया
स्थिति पट्टी की पृष्ठभूमि का रंग बदलने के लिए एक दृष्टिकोण जोड़ा।
जाहिरा तौर पर, iOS6 स्थिति पट्टी को वापस करने का कोई तरीका नहीं है कि यह iOS6 में कैसे काम करता है।
हालाँकि, हम हमेशा कुछ कोड लिख सकते हैं और स्टेटस बार को iOS6 की तरह बदल सकते हैं, और यह सबसे छोटा तरीका है, जिसके साथ मैं आ सकता हूं:
सेट UIViewControllerBasedStatusBarAppearance
करने के लिए NO
में info.plist
(देखें नियंत्रकों हम UIApplicationstatusBarStyle विधि का उपयोग कर स्थिति पट्टी शैली सेट कर सकते हैं कि इतने स्थिति पट्टी शैली को समायोजित होने से रोक करने के लिए।)
AppDelegate's में application:didFinishLaunchingWithOptions
, कॉल करें
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
//Added on 19th Sep 2013
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
}
return YES;
के लिए:
जांचें कि क्या यह iOS 7 है।
UIStatusBarStyleDefault के विपरीत, सफेद होने की स्थिति पट्टी की सामग्री सेट करें।
उन सबव्यू से बचें जिनके फ्रेम दृश्यमान सीमा से अधिक दिखाई दे रहे हैं (ऊपर से मुख्य दृश्य में एनिमेटेड विचारों के लिए)।
भ्रम पैदा करें कि स्टेटस बार स्पेस लेता है जैसे कि iOS 6 में ऐप के विंडो फ्रेम को शिफ्ट और रिसाइज करके कैसा है।
स्क्रीन रोटेशन वाले ऐप्स के लिए,
जोड़कर अभिविन्यास परिवर्तन का पता लगाने के लिए NSNotificationCenter का उपयोग करें
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
में if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
और AppDelegate में एक नई विधि बनाने के लिए:
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
int a = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
int w = [[UIScreen mainScreen] bounds].size.width;
int h = [[UIScreen mainScreen] bounds].size.height;
switch(a){
case 4:
self.window.frame = CGRectMake(0,20,w,h);
break;
case 3:
self.window.frame = CGRectMake(-20,0,w-20,h+20);
break;
case 2:
self.window.frame = CGRectMake(0,-20,w,h);
break;
case 1:
self.window.frame = CGRectMake(20,0,w-20,h+20);
}
}
ताकि जब अभिविन्यास बदल जाए, तो यह ऐप के स्क्रीन ओरिएंटेशन (पोर्ट्रेट, अपसाइड डाउन, लैंडस्केप लेफ्ट, या लैंडस्केप राइट) का पता लगाने के लिए एक स्विच स्टेटमेंट को ट्रिगर करेगा और iOS 6 स्टेटस बार भ्रम बनाने के लिए ऐप के विंडो फ्रेम को क्रमशः बदल देगा।
अपने स्टेटस बार की पृष्ठभूमि का रंग बदलने के लिए:
जोड़ना
@property (retain, nonatomic) UIWindow *background;
में AppDelegate.h
बनाने के लिए background
अपनी कक्षा में एक संपत्ति है और इसे deallocating से एआरसी को रोकने के। (यदि आप एआरसी का उपयोग नहीं कर रहे हैं तो आपको ऐसा करने की आवश्यकता नहीं है।)
उसके बाद आपको बस UIWindow बनाने की आवश्यकता है if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
:
background = [[UIWindow alloc] initWithFrame: CGRectMake(0, 0, self.window.frame.size.width, 20)];
background.backgroundColor =[UIColor redColor];
[background setHidden:NO];
के @synthesize background;
बाद मत भूलना @implementation AppDelegate
!