2012-09-17 136 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]];