Ẩn hiện status bar trong iOS
ios
54
UIStatusBar in iOS
1
UIStatusBar
1
White

Viên Vũ viết ngày 10/07/2015

Nhân một dịp làm với status bar iOS, mình muốn điên lên với nó. Không hiểu cơ chế nó chạy thế nào và hàm nào để set. Và sau khi search tìm hiểu mãi cuối cùng mình thấy no chạy thế nào. Bài viết này tổng hợp lại những hiểu biết của mình về việc ẩn hiện status bar trong iOS 7 trở về sau.

Trước đây, để set status bar ẩn hiện các bạn sẽ dùng hàm:

Swift
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.Fade)

Objective-C

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

Từ iOS7 trở đi Apple cung cấp cho ViewController khả năng thay đổi style và ẩn hiện Status bar. Và đây chính là thứ khiến mình hỗn loạn, sau một hồi tìm hiểu bí kíp nằm ở đây:

If you prefer to opt out of having view controllers adjust the status bar style—and instead set the status bar style by using the UIApplicationstatusBarStyle method—add the UIViewControllerBasedStatusBarAppearance key to an app’s Info.plist file and give it the value NO.
Nguồn
Từ iOS7 trở đi các bạn phải setting biến View controller-based status bar appearance trong file .plist. Biến này là biến BOOL.

  1. View controller-based status bar appearance = YES. Lúc này ViewController sẽ handle việc ẩn hiện status bar. Nhiệm vụ của bạn là phải override lại hàm: ##### Swift
    override func prefersStatusBarHidden() -> Bool {
        return shouldHideStatusBar
    }
Objective-C
 - (BOOL)prefersStatusBarHidden {
    return shouldHideStatusBar;
}

Khi muốn thay đổi trạng thái các bạn sẽ gọi:

##### Swift

 shouldHideStatusBar = true/false
 self.setNeedsStatusBarAppearanceUpdate()

##### Objective-C

 shouldHideStatusBar = YES/NO
[self setNeedsStatusBarAppearanceUpdate];
  1. View controller-based status bar appearance = NO. Lúc này các bạn xài giống như bình thường trước đây.

Lưu ý: Khi các bạn dùng cách 1 thì khi các bạn gọi:

Swift
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.Fade)
Objective-C
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

sẽ không hoạt động và ngược lại.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Viên Vũ

3 bài viết.
3 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
8 4
Có bao giờ bạn gặp phải trường hợp muốn làm 2 app giống nhau gần như hoàn toàn chỉ khác nhau ở chỗ thay màu sắc thay một số tên hay thay đổi data c...
Viên Vũ viết 3 năm trước
8 4
White
2 0
Hôm nay mình tiếp tục trình bày với các bạn những tìm hiểu của mình về orientation trong iOS. Trước tới giờ mình không phải làm app với landscape b...
Viên Vũ viết 3 năm trước
2 0
Bài viết liên quan
White
2 3
Xin chào mọi người. Mình xin chia sẽ một UILabel Helper nhỏ dùng trong truờng hợp cần tính chiều cao của UILabel để xác định "Show More" button có ...
DonDinh viết 3 năm trước
2 3
White
11 4
(Link) (Link) (Link) Ở 2 phần tut trước, mình đã hướng dẫn khá chi tiết cách viết một ứng dụng camera có tích hợp chức năng nhận diện khuôn mặ...
HoangPH viết 3 năm trước
11 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
3 bài viết.
3 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!