19 Eylül 2013 Güncellemeleri:
ekleyerek sabit ölçekleme hataları
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
düzeltilmiştir yazım hataları NSNotificationCenter
açıklamada
12 Eylül 2013 Güncellemeleri:
düzeltilmiş UIViewControllerBasedStatusBarAppearance
içinNO
ekran döndürmeli uygulamalar için bir çözüm ekledi
durum çubuğunun arka plan rengini değiştirmek için bir yaklaşım eklendi.
Görünüşe göre, iOS7 durum çubuğunu iOS6'da nasıl çalıştığına geri döndürmenin bir yolu yok.
Ancak, her zaman bazı kodlar yazabilir ve durum çubuğunu iOS6 benzeri hale getirebiliriz ve bu en kısa yoludur:
Set UIViewControllerBasedStatusBarAppearance
için NO
de info.plist
(görünüm kontrolörleri biz UIApplicationstatusBarStyle yöntemini kullanarak durum çubuğu stilini ayarlayabilirsiniz böylece durum çubuğu stilini ayarlamak zorunda iptal etmek için.)
AppDelegate'lerde application:didFinishLaunchingWithOptions
arayın
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;
amacıyla:
İOS 7 olup olmadığını kontrol edin.
Durum çubuğunun içeriğini UIStatusBarStyleDefault'un aksine beyaz olarak ayarlayın.
Çerçeveleri görünür sınırların ötesine uzanan alt görünümlerden kaçının (ana görünüme yukarıdan canlanan görünümler için).
Durum penceresinin, uygulamanın pencere çerçevesini değiştirip yeniden boyutlandırarak iOS 6'daki gibi yer kapladığı yanılsamasını yaratın.
Ekran döndürme özelliğine sahip uygulamalar için,
ekleyerek yön değişikliklerini tespit etmek için NSNotificationCenter'ı kullanın
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
içinde if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
ve AppDelegate içinde yeni bir yöntem oluşturun:
- (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);
}
}
Böylece yönelim değiştiğinde, uygulamanın ekran yönünü (Dikey, Baş Aşağı, Yatay Sola veya Yatay Sağa) tespit etmek ve sırasıyla iOS 6 durum çubuğu yanılsaması oluşturmak için uygulamanın pencere çerçevesini değiştirmek için bir anahtar ifadesi tetikler.
Durum çubuğunuzun arka plan rengini değiştirmek için:
Ekle
@property (retain, nonatomic) UIWindow *background;
içinde AppDelegate.h
olmak background
sizin sınıfta bir özellik ve ayırmayı kaldırma gelen ARC engeller. (ARC kullanmıyorsanız bunu yapmanız gerekmez.)
Bundan sonra sadece UIWindow'u oluşturmanız gerekir 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;
Sonra unutmayın @implementation AppDelegate
!