2010-06-05 80 views
15

UIImagePickerController將狀態欄樣式更改爲黑色/不透明。 我想保持狀態欄風格黑色/半透明。 我正在尋找一種防止狀態欄樣式改變的方法。 或讓它順利過渡。現在,呈現UIImagePickerController立即更改狀態欄樣式,即使 - 指定了[presentModalViewController:picker animated:YES]。有沒有辦法阻止UIImagePickerController更改狀態欄樣式?

任何方法,歡迎,包括黑客或私人方法。 這是AppStore的應用程序,但我想嘗試。

回答

0

如果您想完全禁用更改狀態欄樣式,可以添加一個UIApplication類別來阻止它。

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

如果這樣的作品,但你要選擇禁用更改,請嘗試子類UIApplication的,所以你可以在需要時通過改變超級調用。

+0

哦,這是行不通的。我也嘗試過UIApplication的子類化,但它也沒有工作。也許UIImagePickerController正在使用私有方法。 – Eonil 2010-06-06 04:49:31

39

我希望狀態欄保持黑色不透明,同時顯示照片庫選擇器(照片選擇器將其更改爲黑色半透明),這解決了我的問題。

設置UIImagePickerDelegate:

libraryUI.delegate = self; 

實現下面的回調:

- (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]; 
    } 
} 

您可以在這裏指定任何一種狀態欄風格。在你的情況下,你可能需要刪除sourceType檢查並指定UIStatusBarStyleBlackTranslucent

+0

這是正確的答案,但您會看到從半透明黑色到您選擇的顏色的輕微「跳躍」。 – Peres 2013-10-18 22:38:36

+0

使用UIImagePickerControllerSourceTypePhotoLibrary時,您是否注意到了這個問題,打開某個相冊,然後平移一下,取消手勢? – Kukosk 2014-01-29 15:30:23

0

我發現對我來說更簡單的方法。只是做

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

和狀態欄被隱藏(如果你想要它是可見的更改代碼)。必須在從UIImagePickerController中選取圖像後調用。

1

試試這個完美的工作在iOS 8

-(void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated 
{ 
    [[[viewController navigationController] navigationBar] setBarStyle:UIBarStyleBlack]; 
} 
相關問題