Di iOS saya video aplikasi status bar yang tersembunyi di beberapa view controller. Saya telah melakukan ini dengan menggunakan kode berikut.
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Ia bekerja untuk iOS 5 dan iOS 6 , tapi tidak di iOS 7.
Saya mencoba dengan ini khususnya view controller,
Misalnya:
-(BOOL)prefersStatusBarHidden { return YES; }
Ia bekerja dengan baik, tapi aku tidak bisa menunjukkan status bar lagi di induk view controller.
Tambahkan baris berikut di viewdidload
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];
dan menambahkan metode baru
- (BOOL)prefersStatusBarHidden {
return YES;
}
juga info perubahan.plist View controller berbasis status bar penampilan" = TIDAK ada
yang bekerja untuk saya
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated]
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated]
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool)
{
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
Yang saya lakukan berikut ini, dan tampaknya untuk bekerja (bahkan di iOS 8):
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
Tapi itu akan lebih menarik ketika ada's UINavigationController yang terlibat:
Untuk menyembunyikan status bar di iOS7 yang anda butuhkan 2 baris kode
[[UIApplication sharedApplication] setStatusBarHidden:YA];
View-Controller Berdasarkan Status Bar Penampilan = TIDAK ada
Untuk pemahaman yang lebih baik tambahkan beberapa foto dengan komentar:
Aplikasi sebelum perubahan
Ditemukan dalam Project Navigator
folder bernama File Pendukung
dan klik pada *.plist
Setelah anda akan mendapatkan pengaturan yang berbeda dari aplikasi anda menunjukkan. Anda perlu menambahkan 2 kunci UIStatusBarHidden
dan UIViewControllerBasedStatusBarAppearance
. Anda dapat melakukan ini hanya dengan mengklik pada tombol +
Setelah menekan + anda dapat memilih salah satu dari tombol - hanya mulai mengetik.
Versi yang benar:
Dan akhirnya aplikasi setelah menerapkan perubahan ini:
Juga, anda dapat menemukan alternatif solusi di sini
Berikut ini adalah Swift versi (pra iOS9):
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
Hal ini juga bekerja (iOS7+):
override func prefersStatusBarHidden() -> Bool {
return true
}
Anda juga perlu menghubungi:
setNeedsStatusBarAppearanceUpdate()
di katakan viewDidLoad()
.
Catatan bahwa jika anda menggunakan SplitView controller, atau beberapa lainnya wadah
view controller, anda juga perlu untuk memilikinya kembali kelas anda ketika dikirim childViewControllerForStatusBarHidden
. Salah satu cara untuk melakukan ini adalah masyarakat yang lemah var untuk mengatakan statusController
, dan kembali dalam metode ini ditimpa.
Langkah-langkah untuk menyembunyikan status bar di iOS
View controller berbasis status bar penampilan
set TIDAK
iOS 9 dan seterusnya :
Sebagai statusBarHidden
metode Usang dari iOS9 anda perlu menambahkan dua nilai di plist sebagai berikut :
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
atau dengan Antarmuka Pengguna Mohon refre gambar di bawah ini :
Sebagai statusBarHidden
adalah Usang dari iOS9 :
@property(readwrite, nonatomic,pengambil=isStatusBarHidden) BOOL statusBarHidden NS_USANG_IOS(2_0, 9_0, "Menggunakan -[UIViewController prefersStatusBarHidden]") __TVOS_DILARANG;
TETAP SOLUSI UNTUK SWIFT 3+ (iOS 9, 10)
1 - Di info.plist set di bawah properti
2 - Paste kode di bawah ini ke Akar controller , Untuk
private var isStatusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}
Anda dapat memanggil isStatusBarHidden = true
dan isStatusBarHidden = false
mana yang anda inginkan untuk `menyembunyikan/menampilkan status bar
Swift 5
Gunakan langkah berikut untuk menyembunyikan iOS Status Bar:
Akhir Pengaturan Screenshot:
Ini bekerja pada Xcode 10.2
Dari UIKit
>UIApplication.h
:
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
Jadi harus set View controller berbasis status bar penampilan
untuk TIDAK
Untuk menjawab Susitha's pertanyaan: gunakan setNeedsStatusBarAppearanceUpdate. Ini akan membuat panggilan untuk prefersStatusBarHidden untuk me-refresh dengan yang anda inginkan status bar negara. Coba ini:
@property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early
- (BOOL)prefersStatusBarHidden {
return self.isHideStatusBar;
}
- (void)someMethod {
// triggered by an event or user action
[self setHideStatusBar:YES];
[self setNeedsStatusBarAppearanceUpdate];
}
Jika anda ingin melihat status bar lagi, set properti anda hideStatusBar (atau apa pun yang anda menyebutnya) TIDAK ada. Panggilan preferStatusBarHidden secara tidak langsung dengan membuat panggilan lain untuk
[self setNeedsStatusBarAppearanceUpdate]