我设法改变了navigation bar
的颜色,但按钮的颜色仍然是黑色。有没有办法改变按钮的颜色?见下图。
更新:由于版权问题,我们不得不删除该图片。
答案 0 :(得分:21)
没有您的自定义图片是不可能的。
但是您应该在创建导航控制器后立即更改色调颜色:
UIImagePickerController *pickerImg = [[UIImagePickerController alloc] init];
pickerImg.navigationBar.barStyle = UIBarStyleBlackOpaque; // Or whatever style.
// or
pickerImg.navigationBar.tintColor = [UIColor whateverColor];
答案 1 :(得分:1)
您可以隐藏导航栏,并使用imageview创建自定义导航栏并在其上放置2个按钮。通过这样做,您可以根据需要更改按钮的图像/颜色以及图像视图。
用于隐藏导航栏:
self.navigationController.navigationBarHidden=YES;
然后在XIB中: 创建一个44高度的视图,在其上放置imageview并在其上放置2个按钮和1个标签。
希望这可以解决您的问题。
答案 2 :(得分: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]];
答案 3 :(得分: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;
}
}
答案 4 :(得分:0)
从iOS 5开始,您可以使用新的UIAppearance
API实现所需的自定义。这个tutorial基本上向您展示了如何。
答案 5 :(得分:0)
您必须为BarButtonItem定义UIButtonTypeCustom按钮。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIBarButtonItem *yourBarButton = [[UIBarButtonItem alloc] initWithCustomView:button];
有关详细信息,请查看此帖子:UIBarButtonItem with color?
答案 6 :(得分: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];
答案 7 :(得分: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()
答案 8 :(得分:0)
使用UIAppearance的一个班轮:
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UIImagePickerController class]]] setTintColor:[UIColor redColor]];