2012-07-03 84 views
0

我想在相機視圖中爲黑色條形變色。以下方法迄今尚無法運作。有兩個視圖需要更改,第一個是攝像頭圖標和「取消」,第二個是「重拍」和「使用」按鈕。有任何想法嗎?如何更改UIImagePicker中的欄顏色?

- (void)openCamera { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    picker.navigationBar.barStyle = UIBarStyleBlackOpaque; 
    picker.toolbar.barStyle = UIBarStyleBlackOpaque; 
    picker.navigationBar.tintColor = [UIColor blackColor]; 
    [self presentModalViewController:picker animated:NO]; 
} 

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    UIImagePickerController *picker = (UIImagePickerController *)navigationController; 
    if((picker)&&(picker.sourceType == UIImagePickerControllerSourceTypeCamera)) 
    { 
     picker.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; 
     picker.navigationController.toolbar.barStyle = UIBarStyleBlackOpaque; 
     picker.navigationBar.tintColor = [UIColor blackColor]; 
    } 
} 

回答

2

使用UIAppearance可能會帶來一些好運。查找documentation

+0

非常好,能夠改變所有UIToolbars和UINavigationBars不幸的是UIImagePicker似乎使用別的東西。 –

+0

嗯......有趣。我的印象是,它使用了'UINavigationController',它有自己的'UINavigationBar' ... – Jasarien

+0

你有沒有嘗試過將'bar style設置爲'UIBarStyleDefault'並使用'tintColor'? – Jasarien

0

您可以使用UIImagePickerControllershowsCameraControlscameraOverlayViewUIImagePickerController使用自定義視圖。將showsCameraControls的值設置爲NO將隱藏UIImagePickerController上的所有內容,但隱藏相機視圖。 cameraOverlayView允許您將自己的視圖放在相機視圖上。然後,您可以使用自己的底部條,自己的按鈕創建一個視圖,並將其放在UIImagePicker的前面。

UIView *overlayView = [[UIView alloc] init]; 
/* Customize overlayView with your bottomBar and button */ 
UIImagePickerController imagePickerController = [[UIImagePickerController alloc] init]; 
/* Configure your UIImagePickerController for picture and/or video */ 
imagePickerController.showsCameraControls = NO; //Must be set to NO if you want to use the cameraOverlayView 
imagePickerController.cameraOverlayView = overlayView; 
overlayView = nil; 

不幸的是,用這種方法,您必須重建原始UIImagePickerController視圖(閃光燈模式按鈕,選項按鈕,...)如果你想使用它們的所有按鈕,你必須創建自己的導航控制器通過「重新拍攝」和「使用」按鈕進入視圖。然而,實施起來非常簡單。

+1

我該如何去實現具有視圖和「重拍」和「使用」按鈕的導航控制器? – bmueller