2012-09-17 172 views
8

我設法改變了navigation bar的顏色,但按鈕的顏色仍然是黑色。有沒有辦法改變按鈕的顏色?見下圖。如何更改UIImagePickerController導航欄上的按鈕顏色?

UPDATE:由於版權問題,抱歉不得不刪除圖像。

+0

你嘗試過這麼遠嗎?你如何設置導航條的背景?還沒有嘗試過,但'UIAppearance'出現在我的腦海裏... – Pfitz

+0

@Pfitz UIAppearance只能用於iOS 5.0及以上版本,但我的目標是ios 4.0 –

回答

0

從iOS 5及更高版本開始,您可以使用新的UIAppearance API實現所需的自定義設置。這tutorial本質上顯示你如何。

+0

我的目標是4.0及以上,所以我不認爲將是一個選項 –

+0

然後,您可能必須創建自己的一組按鈕,並將它們放置在導航欄上。另一種方法是覆蓋條形按鈕項目的正確方法。 – Bourne

21

沒有您的自定義圖像是不可能的。

,但你應該儘快創建導航控制器改變色調顏色:

UIImagePickerController *pickerImg = [[UIImagePickerController alloc] init]; 
pickerImg.navigationBar.barStyle = UIBarStyleBlackOpaque; // Or whatever style. 
// or 
pickerImg.navigationBar.tintColor = [UIColor whateverColor]; 
0

你必須定義一個UIButtonTypeCustom按鈕爲您BarButtonItem。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIBarButtonItem *yourBarButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 

欲瞭解更多信息,看看這個帖子:UIBarButtonItem with color?

1

您可以隱藏naviagtion欄,並通過使用ImageView的創建自定義navagtion酒吧和放在it.By這樣做,你2個按鈕可以按照您的要求更改按鈕的圖像/顏色以及圖像視圖。

用於隱藏導航欄:

self.navigationController.navigationBarHidden=YES; 

然後在XIB: 創建44的高度,在其上發生的ImageView的視圖,並放置2按鈕並在其上1個標籤。

希望這會解決您的問題。

+0

這不適用於UIImagePickerController –

+0

是的你是對的,你不能改變uiimagepickerController按鈕的顏色,但你可以通過使用覆蓋控制器類來創建一個自定義的imagePickerController。作爲參考,您可以檢查此鏈接:http://www.devsrealm.com/objective-c/custom-camera-app-1/ – megha

+0

覆蓋視圖僅適用於相機,不適用於Photo庫。 –

1

@Ankit您可以嘗試從導航欄中獲取子視圖,然後設置所需的顏色。我用這種方法在搜索欄上設置取消按鈕的顏色。取消按鈕的大小是48 * 30,您可以使用子視圖數組來設置所需的顏色。我不確定,但這可能會完成這項工作。以下是我用來設置搜索欄上取消按鈕顏色的代碼。

NSArray *arrySearchSubviews=[searchBarFrnds subviews]; 
for (UIButton *btn in arrySearchSubviews) 
{ 
    CGRect rect=btn.frame; 
    NSLog(@"width %f",rect.size.width); 
    NSLog(@"height %f",rect.size.height); 
    if (rect.size.width==48) 
    { 
     [btn setTintColor:[UIColor colorWithRed:0 green:0.403f blue:0.4f alpha:1.0f]]; 
    } 
} 
+0

+1有趣的方法,但我不認爲這是要走的路。 –

+0

@AnkitSrivastava你有沒有試過這種方法? – Singh

+0

複雜的我的情況下,因爲我照片庫鑽入子文件夾,我不能使用tintColor,因爲我的目標是ios 4.0及以上。 –

1

如果你想影響出現在如你希望改變的人的所有視圖按鈕的顏色,然後只需使用以下命令:

UIBarButtonItem *searchBarButton = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]; 
[searchBarButton setTintColor:[UIColor colorWithRed:138.0/255.0 green:183.0/255.0 blue:64.0/255.0 alpha:1.0]]; 
0

我希望這將有助於您!

第1步:

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
[self presentViewController:picker animated:YES completion:NULL]; 

第2步:

/* Status bar color */ 
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 
/* Left button */ 
navigationController.navigationBar.tintColor = [UIColor blackColor]; 
/* Right button color */ 
navigationController.navigationBar.topItem.rightBarButtonItem.tintColor = [UIColor blackColor]; 
0

如果你不介意使用在整個應用程序相同的風格,使用外觀@Bourne建議:

let font = UIFont(name:"Montserrat-Bold", size:16)! 
    let attributes: LTDictStrObj = [ 
     NSForegroundColorAttributeName: UIColor.whiteColor(), 
     NSFontAttributeName: font, 
    ] 
    UIBarButtonItem.appearance().setTitleTextAttributes(attributes, forState: UIControlState.Normal) 

如果您使用像我這樣的白色,您還可以更改導航欄的背景顏色:

 picker.navigationBar.barTintColor = .redColor() 
1
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if ([navigationController isKindOfClass:[UIImagePickerController class]]) { 
     if ([[UIDevice currentDevice] systemVersion].floatValue >= 8.0) { 
      [viewController.navigationController.navigationBar setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbar1"]]]; 
     } else { 
      [viewController.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar2"] forBarMetrics:UIBarMetricsDefault]; 
     } 
    viewController.navigationController.navigationBar.tintColor = [UIColor whiteColor]; 
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 40)]; 
    titleLabel.textColor = [UIColor whiteColor]; 
    titleLabel.textAlignment = NSTextAlignmentCenter; 
    titleLabel.font = [UIFont boldSystemFontOfSize:18.0f]; 
    titleLabel.text = @"photos"; 
    [viewController.navigationItem setTitleView:titleLabel]; 
    viewController.edgesForExtendedLayout = UIRectEdgeNone; 
    } 
} 
+1

如何添加一些文字說明或信息,說明您爲了使其工作所做的更改?只是粘貼代碼沒有太大意義,或者你問的是要遍歷代碼的每一行併吞下它? –

0

一個內膽使用UIAppearance:

[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UIImagePickerController class]]] setTintColor:[UIColor redColor]];