2010-06-05 33 views
15

UIImagePickerController thay đổi kiểu thanh trạng thái thành đen/mờ. Tôi muốn giữ phong cách thanh trạng thái màu đen/mờ. Tôi đang tìm cách ngăn chặn thay đổi kiểu thanh trạng thái. Hoặc làm cho nó được chuyển tiếp thuận lợi. Bây giờ, trình bày UIImagePickerController thay đổi kiểu thanh trạng thái ngay lập tức, ngay cả - [currentModalViewController: picker animated: YES] được chỉ định.Có cách nào để ngăn chặn kiểu thanh trạng thái thay đổi UIImagePickerController không?

Bất kỳ phương thức, chào mừng, bao gồm cả tấn công hoặc phương pháp riêng tư. Đây là một ứng dụng cho AppStore, tuy nhiên tôi thậm chí muốn thử.

Trả lời

0

Nếu bạn muốn tắt hoàn toàn thay đổi kiểu thanh trạng thái, bạn có thể thêm danh mục UIApplication chặn nó.

@implementation UIApplication (MyCategory) 
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle {} 
@end 

Nếu điều đó có hiệu quả, nhưng bạn muốn vô hiệu hóa các thay đổi có chọn lọc, hãy thử phân lớp UIApplication để bạn có thể gọi siêu khi bạn muốn thay đổi.

+0

Oh nó không hoạt động. Tôi cũng đã thử phân lớp UIApplication, nhưng nó cũng không hoạt động. Có lẽ UIImagePickerController đang sử dụng phương thức riêng tư nào đó. – Eonil

39

Tôi muốn thanh trạng thái duy trì màu đen mờ trong khi hiển thị bộ chọn thư viện ảnh (bộ chọn ảnh thay đổi nó thành màu đen mờ) và điều này giải quyết được vấn đề cho tôi.

Đặt UIImagePickerDelegate:

libraryUI.delegate = self; 

Thực hiện gọi lại sau:

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

    if ([navigationController isKindOfClass:[UIImagePickerController class]] && 
     ((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) { 
     [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO]; 
    } 
} 

Bạn có thể chỉ định bất kỳ loại phong cách thanh trạng thái ở đây. Trong trường hợp của bạn, có thể bạn sẽ phải xóa kiểm tra sourceType và chỉ định UIStatusBarStyleBlackTranslucent.

+0

Đây là câu trả lời đúng, mặc dù bạn sẽ thấy một chút "nhảy" từ màu đen mờ đến màu bạn chọn. – Peres

+0

Bạn có nhận thấy sự cố khi sử dụng UIImagePickerControllerSourceTypePhotoLibrary, mở một số album và sau đó quay lại một chút và hủy cử chỉ? – Kukosk

0

Tôi đã tìm thấy cách tiếp cận dễ dàng hơn cho tôi. Chỉ cần làm

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
[self.delegate setNeedsStatusBarAppearanceUpdate]; 

và thanh trạng thái bị ẩn (thay đổi mã nếu bạn muốn hiển thị). Phải được gọi sau khi chọn hình ảnh từ UIImagePickerController.

1

Hãy thử điều này làm việc một cách hoàn hảo trên ios 8

-(void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated 
{ 
    [[[viewController navigationController] navigationBar] setBarStyle:UIBarStyleBlack]; 
} 
Các vấn đề liên quan