Durum çubuğu kaybolmayacak


112

Bir uygulama oluşturuyorum ve durum çubuğunun gizlenmesini istiyorum. Uygulamayı test ettiğimde, açılış ekranı gösterilirken durum çubuğu gizleniyor, ancak uygulama tam olarak yüklendiğinde durum çubuğu yeniden beliriyor.

Xcode 5 ve iOS 7 kullanıyorum ve durum çubuğunu programlı olarak devre dışı bırakmayı denedim

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

info.plist dosyasında ve .xib dosyasındaki öznitelik denetçisini kullanarak. Hiçbir şey işe yaramıyor.

Herhangi bir fikir?

Yanıtlar:


220

Uygulamanızın kök görünüm denetleyicisine aşağıdaki yöntemi eklemeyi deneyin:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

2
Bunu global olarak nasıl yapmalı?
jjxtra

16
Ayrıca, Apple belgelerinde belirtildiği gibi, [self setNeedsStatusBarAppearanceUpdate];bu yöntemi varsayılan değerden farklı bir değerle çağırmanız gerekir (varsayılan değer HAYIR'dır).
manderson

3
@PsychoDad Daha küresel bir çözüm için cevabımı kontrol edin.
Idan

2
Mükemmel, teşekkürler. İOS 7'nin bunu neden yaptığını ve NO durum çubuğu ayarları içermeyen XIB'lere saygı duymadığını anlayamıyorum!
justinhartman

1
Bunu, yığına eklenen bir ViewController'a eklemek, o viewcontroller'daki durum çubuğunu gizlemek için ihtiyacım olan tek şeydi; bu görünüm denetleyicisi kaldırıldığında durum çubuğu geri döner.
MacD

126

Bu değeri pliste eklemelisiniz: " Denetleyici tabanlı durum çubuğu görünümünü görüntüle " ve " HAYIR " olarak ayarlamalısınız .

Bu, durum çubuğunu gizli moda ayarlamanızı sağlayacaktır . Bu, verilen diğer cevapların aksine onu global olarak ayarlar.

GÜNCELLEME: Durum çubuğunun açılış ekranında gizlenmesini istiyorsanız , hedef durum çubuğu seçeneklerinde " Uygulama başlatılırken gizle " seçeneğini işaretlemeyi unutmayın . Ayrıca, uygulama içindeki kodla yapmak istemiyorsanız, plistteki " EVET " e " Durum çubuğu başlangıçta gizlendi " seçeneğini ekleyebilirsiniz .


2
Bunu anlamam çok zaman aldı. Bence herkesin sahip olacağı bir sorun ve Apple bundan yeterince bahsetmedi. yardım
etmekten

7
iyi çalışıyor, "Durum çubuğu başlangıçta gizlendi" için .plist değerini EVET olarak ayarlamayı unutmayın.
andreas-supersmart

1
Vay canına, Kobold2d 2.1.0 ve iOS 7 ile çalışan tek şey buydu, çok teşekkürler!
Binarian

5
Apple aslında geriye dönük uyumluluğun şampiyonları değil. Hepimiz flütleriyle dans edelim ve uygulamalarımızın her birini güncelleyelim. Üzgünüm, hayal kırıklığı yaratıyorum. Apple neden olur.
Henrik Erlandsson

1
nihayet benim için çalışıyor. Çünkü - (BOOL) modelview'de çalışmayan statusbarhidden metodunu tercih ediyor.
utkal patel

73

Gönderdiğiniz kod iOS 6.1 ve altı sürümler için çalışıyor. Apple, iOS 7 için her görünümün durum çubuğunu doğrudan kontrol etmek için yeni yöntemler sunmuştur. Info.plist'inizdeki bu seçeneği kapatmak , en azından mevcut Geliştirici Önizlemesi (4) için durum çubuğunu gizlemenizi sağlayacaktır.

Bunu ekleyin ve HAYIR olarak ayarlayın

Referans için lütfen Apple'ın geliştirici portalında bulunan iOS 7 geçiş kılavuzuna bakın.


3
Bence bu cevap daha iyi çünkü uygulamamda sadece manzara modunda durum çubuğunu gizlemek istiyorum, teşekkürler!
Son Nguyen

teşekkürler, bu bana yardımcı oluyor çünkü bunu tüm uygulamam için gizlemek istiyorum
kevinl

2
Bence bu cevap en iyi cevap olmalı -> Burada açıklanmıştır developer.apple.com/library/prerelease/ios/documentation/…
marceloquinta

5
Bunu yaptım, ancak durum çubuğunu gizlemiş gibi görünüyor, ancak uygulamam durum çubuğunun kaplayacağı alan miktarına göre hala 'aşağı itiliyor' ve pil göstergesini hala görebiliyorum!
vedran

36

durum çubuğunu tüm uygulamamda ve "uygulama" -info.plist'te gizlemeye çalışıyorum ve "Bilgi Mülk Listesi" sözlüğüne iki satır ekliyorum "Denetleyici tabanlı durum çubuğu görünümünü görüntüle" yi NO ve in "olarak ekliyorum Durum çubuğu başlangıçta gizli "YES olarak ayarla ve benim için n_n çalışıyor"

plist bilgisi


2
Bu, uygulamanızı, geliştiricilerin yeni bir şeyler yapmak için uygulamayı düzeltmeye vakti olmadığında, yalnızca eski uygulamaları iOS 7'de amaçlandığı gibi çalıştırmak için tasarlanmış bir uyumluluk moduna zorlar. Bunun yerine, görünüm denetleyicilerinizde tercih * yöntemlerini uygulamanız gerekir.
lhunath

17

Ancak, UIImagePicker kullanıyorsanız, durum çubuğu yeniden görünür.

Bu durumda, durum çubuğunu aşağıdaki gibi gizlemelisiniz,

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }

2
Ben de aynı sorunu yaşıyorum. UIImagePicker'ı kullanana kadar durum çubuğu gizlendi. Çözümünüzü denedim ve benim için çalışmıyor. Gönderinize kodun dışında bir şey eklemem gerekiyor mu?
Dev01

@WootWoot da ekledim - (BOOL) ,StatusBarHidden'i tercih ediyor {return YES; } denetleyicileri görüntülemek için. Lütfen dene.
2013

benim için işe yaramıyor gibi görünüyor .. gerçekten aramalı mısın setNeedsStatusBarAppearanceUpdate?
RyanM

Bir düğme tıklamasında durum çubuğunu gizlemem gerekiyor. Aşağıdaki kodu denedim ama işe yaramadı. Biri bana yardım edebilir mi lütfen? [[UIApplication sharedApplication] setStatusBarHidden: YES];
janitheshan

8

Uzun bir araştırmadan sonra, nihayet UIImagePickerControllersorunu çözen çok basit bir çözüm buldum .

Diğer yanıtlarda belirtildiği gibi, durum çubuğunuzu AppDelegate didFinishLaunching'de gizli olarak ayarlayın ve "Denetleyici tabanlı durum çubuğu görünümünü görüntüle" yi HAYIR olarak ayarlayın.

Ardından, AppDelegate'inizde:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila - UIImagePickerController en başta olsa bile Durum Çubuğunuz gizli kalacaktır.

Bu, uygulama boyunca gizli kaldığı için bir UIImagePickerController'ı her sunuşunuzda onu 'yeniden düzenlemekten' daha iyidir.


2
En azından iPad'de iOS7'de bir şeyler hala bozuk gibi görünse de - UIImagePickerController ikinci kez gösterildiğinde hala bir durum çubuğu atıyor ... Hurrrr ... :-( Şu anda appDelegate'i her görünümde tekrar gizlemekle birlikte kullanıyorumWillAppear . Bu nedenle, kısa bir süre kirli görünse bile, hızla tekrar
düzelir

1
Bu benim için iOS8'de çalışan tek yöntem ... bir şekildeStatusBarHidden'in görünüm denetleyicimde çağrılmamasını tercih ediyor.
mojuba

7

Belirli bir UIViewController üzerindeki durum çubuğunu gizlemek için şunu eklemeniz yeterlidir:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

Bu yardımcı olur umarım !


!! Bu benim için iOS 9.2'de çalışan çözüm, plist'i değiştirmenin hiçbir etkisi olmadı.
mico

5

Proje özetinden gizleyebilirsiniz. başlatma sırasında bir onay kutusu gizlenir.

Anlık görüntüye bakın

görüntü açıklamasını buraya girin


4

Bu çözümü kendim için buldum. Mucizevi şekilde çalışır. UIImagePickerController'ı kullanmak istediğiniz görünüm denetleyicinize bu kodu yazın.

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
     }

3

Yukarıdaki alones cevabına ek olarak, imagePickerControllerDidCancel yöntemini uyguladığınızdan ve aynı kodu oraya da eklediğinizden emin olun.


2

UIImagePicker ile de sorunlar yaşıyordum. Alones cevabına benzer şekilde, benim çözümüm şuydu. Bu satırı veya kodu ekledim:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

bu işleve:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

Bunu iOS 6 veya daha eski sürümlerle test etmedim ancak iOS 7'de harika çalışıyor.


2

Hızlı Çözüm

sadece bunu görünüm denetleyicilerinize ekleyin:

override func prefersStatusBarHidden() -> Bool {
    return true
}

0

Xcode 6 kullanıyorum, bu çözüm benim için iOS 7 ve 8'de çalışıyor:

İlk olarak, plist dosyasında "Denetleyici tabanlı durum çubuğu görünümünü görüntüle" yi HAYIR olarak ayarlayın.

İkinci olarak, AppDelegate'te şunu ekleyin:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

0

Benim sorunum, görüntüleme denetleyicisi muhafazasını kullanmamdı. Yalnızca örneğin bir gezinme denetleyicisine gömülü olan en üstteki görünüm denetleyicisi durum çubuğunu gizleyebilir veya gösterebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.