Iphone 如何更改UIImagePickerController导航栏上的按钮颜色?
我已成功更改了Iphone 如何更改UIImagePickerController导航栏上的按钮颜色?,iphone,objective-c,ios,uiimagepickercontroller,Iphone,Objective C,Ios,Uiimagepickercontroller,我已成功更改了导航栏的颜色,但按钮的颜色仍然是黑色。还有什么办法可以改变按钮的颜色吗?见下图 更新:很抱歉,由于版权问题,不得不删除图像。从iOS 5及以后,您可以使用新的UIAppearanceAPI实现所需的自定义设置。这基本上向您展示了如何操作。没有自定义图像是不可能的 但创建导航控制器后,应立即更改色调颜色: UIImagePickerController *pickerImg = [[UIImagePickerController alloc] init]; pickerImg.na
导航栏的颜色
,但按钮的颜色仍然是黑色。还有什么办法可以改变按钮的颜色吗?见下图
更新:很抱歉,由于版权问题,不得不删除图像。从iOS 5及以后,您可以使用新的
UIAppearance
API实现所需的自定义设置。这基本上向您展示了如何操作。没有自定义图像是不可能的
但创建导航控制器后,应立即更改色调颜色:
UIImagePickerController *pickerImg = [[UIImagePickerController alloc] init];
pickerImg.navigationBar.barStyle = UIBarStyleBlackOpaque; // Or whatever style.
// or
pickerImg.navigationBar.tintColor = [UIColor whateverColor];
您必须为您的BarButtonItem定义UIButtonTypeCustom按钮
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIBarButtonItem *yourBarButton = [[UIBarButtonItem alloc] initWithCustomView:button];
有关更多信息,请参阅此帖子:您可以隐藏导航栏,并使用imageview创建自定义导航栏,并在其上放置2个按钮。通过此操作,您还可以根据需要更改按钮的图像/颜色以及图像视图 用于隐藏导航栏:
self.navigationController.navigationBarHidden=YES;
然后在XIB中:
创建44高度的视图,将imageview放置在其上,并在其上放置2个按钮和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]];
}
}
如果要影响所有视图(如希望更改的视图)中显示的按钮的颜色,只需使用以下命令:
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]];
我希望它能帮助你 步骤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];
如果您不介意在整个应用程序中使用相同的样式,请使用@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()
一个使用UIS外观的衬里:
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UIImagePickerController class]]] setTintColor:[UIColor redColor]];
到目前为止你试过什么?如何设置导航栏的背景?我自己还没有试过,但是我想到了,UIAppearance。@Pfitz UIAppearance只适用于ios 5.0及以上版本,但我的目标是ios 4.0及以上版本,所以我不认为这是一个选项。您可能需要创建自己的一组按钮并将它们放在导航栏上。另一种方法是覆盖条形按钮项的drawrect方法。是的,您是对的,您不能更改uiimagepickerController上按钮的颜色,但可以使用overlay控件类创建自定义imagePickerController。作为参考,您可以查看此链接:+1以了解有趣的方法,但我不认为这是一种方式。对于我的场景,由于照片库深入到子文件夹中,我无法使用tintColor,因为我的目标是ios 4.0及更高版本。添加一点文字注释或关于您为使其工作所做更改的信息如何?仅仅粘贴代码没有多大意义,或者你是在问,是不是要检查代码的每一行并吞下它?
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UIImagePickerController class]]] setTintColor:[UIColor redColor]];