2010-08-22 26 views
21

Ngay khi tôi thêm chế độ xem phụ UIImagePickerController vào chế độ xem, thanh trạng thái biến mất và tôi không thể lấy lại. Có cách nào để giữ thanh trạng thái hiển thị không?iOS SDK - Cách lấy lại thanh trạng thái khi sử dụng UIImagePickerController?

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 


[self.view addSubview:imagePicker.view]; 

[imagePicker viewWillAppear:YES]; 
[imagePicker viewDidAppear:YES]; 

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; 

Trả lời

29

Tôi cũng phải làm điều tương tự trong ứng dụng máy ảnh. Rõ ràng, ngoài việc thiết lập thanh trạng thái để không bị ẩn, bạn cũng phải thiết lập lại phong cách của nó sau khi xem camera làm cho nó biến mất. Hãy thử điều này:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; 
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 
+0

Brad, đây không phải là làm việc cho tôi, tôi đang làm nó trong loadView, viewDidLoad và viewDidAppear tất cả để avail không có. –

+0

Brad, điều này làm việc tốt cho tôi. Trong thực tế, tôi đã phải sử dụng setStatusBarHidden khi chuyển đổi giữa máy ảnh và thư viện ảnh nguồn. – cpungaliya

+0

Làm cách nào để có được một xử lý trên thanh trạng thái này để tôi có thể hiển thị một số văn bản trên đó trong khi ứng dụng của tôi ở chế độ nền? – Namratha

1

Thêm UIImagePicker của bạn để xem gốc (tức là Navigation điều khiển hoặc TabbarController)

[self.tabBarController presentModalViewController:imagePickerController animated:YES]; 

Sau đó bạn có thể sử dụng

- (void)imagePickerController:(UIImagePickerController *)picker 
      didFinishPickingImage:(UIImage *)image 
         editingInfo:(NSDictionary *)editingInfo 
{ 
     // do your stuff 
    [picker dismissModalViewControllerAnimated:YES]; 
} 

để đóng ImagePicker của bạn.

+0

Xin chào Henrik, cảm ơn câu trả lời của bạn. Tôi muốn thanh trạng thái hiển thị mọi lúc. Điều đó có thể không? – dan

0

tốt, tôi biết bạn đang không được phép làm điều này, nhưng nếu bạn phân lớp UIImagePickerController, bạn có thể đặt rằng trong lớp tùy chỉnh của bạn:

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 
} 
6

Sau khi đọc bài viết này và tìm none các câu trả lời làm việc, tôi cố gắng làm cho nó làm việc bằng cách làm như sau:

• Thiết lập một đại biểu cho UIImagePickerController
• trong đại biểu rằng, ẩn thanh trạng thái trong navigationController:didShowViewController:animated: fu của đại biểu nction.

EG:

-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
} 
+1

điều này làm việc cho tôi! – ninjaneer

0

Không ai trong số các giải pháp làm việc trên iOS 5.1.1 giải pháp của Tim làm việc trên iOS 4.2.1 Cách duy nhất tôi đã có thể khắc phục vấn đề trên iOS 5.1.1 giống như rằng

-(void)viewDidAppear:(BOOL)animated 
{ 
    double delayInSeconds = 0.01; 
    dispatch_time_t popTime = 
      dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [[UIApplicationsharedApplication] setStatusBarHidden:NO]; 
}); 

rất khó hiểu và sai.

Tôi dành nửa ngày để tìm giải pháp và sau đó quyết định chỉ sử dụng phương pháp tiếp cận AVFoundation và tôi mất một giờ để thực hiện cùng một ảnh chụp cơ bản mà tôi cần bằng AVCaptureSession và AVCaptureStillImageOutput. Và nó hoạt động tốt hơn - AVCaptureSession bắt đầu nhanh hơn UIImagePickerController và AVCaptureVideoPreviewLayer có tỷ lệ khung hình tốt hơn nhiều trên các thiết bị hiện đại so với xem trước máy ảnh UIImagePicker.

15

Giải pháp của câu trả lời được chấp nhận đã không còn được dùng nữa.

Sử dụng

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

thay vì

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; 

giá trị hợp lệ cho tham số hình ảnh động là UIStatusBarAnimationNone, UIStatusBarAnimationFade, UIStatusBarAnimationSlide. Chi tiết được tìm thấy trong số documentation.

Các vấn đề liên quan