我设法改变了navigation bar
按钮的颜色,但按钮的颜色仍然是黑色。有没有办法改变按钮的颜色?见下图。
更新:抱歉,由于版权问题,不得不删除图像。
我设法改变了navigation bar
按钮的颜色,但按钮的颜色仍然是黑色。有没有办法改变按钮的颜色?见下图。
更新:抱歉,由于版权问题,不得不删除图像。
没有您的自定义图像是不可能的。
但是您应该在创建导航控制器后立即更改色调颜色:
UIImagePickerController *pickerImg = [[UIImagePickerController alloc] init];
pickerImg.navigationBar.barStyle = UIBarStyleBlackOpaque; // Or whatever style.
// or
pickerImg.navigationBar.tintColor = [UIColor whateverColor];
@Ankit您可以尝试从导航栏中获取子视图,然后设置所需的颜色。我使用这种方法来设置搜索栏上取消按钮的颜色。取消按钮的大小为 48*30,您可以使用 subviews 数组设置所需的颜色。我不确定,但这可能会起作用。下面是我用来设置搜索栏上取消按钮颜色的代码。
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]];
}
}
您可以隐藏导航栏,并使用 imageview 创建自定义导航栏并在其上放置 2 个按钮。通过这样做,您可以根据您的要求更改按钮的图像/颜色以及图像视图。
隐藏导航栏:
self.navigationController.navigationBarHidden=YES;
然后在 XIB 中:创建一个 44 高度的视图,在其上放置 imageview 并在其上放置 2 个按钮和 1 个标签。
希望这能解决您的问题。
我希望它会帮助你!
步骤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];
如果您想影响出现在所有视图中的按钮的颜色,例如您希望更改的那个,那么只需使用以下命令:
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]];
- (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;
}
}
UIAppearance
您可以使用iOS 5 及更高版本的新 API 实现所需的自定义。本教程基本上向您展示了如何。
您必须为 BarButtonItem 定义一个 UIButtonTypeCustom 按钮。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIBarButtonItem *yourBarButton = [[UIBarButtonItem alloc] initWithCustomView:button];
有关更多信息,请查看这篇文章:UIBarButtonItem with color?
如果您不介意在整个应用程序中使用相同的样式,请使用 @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()
使用 UIAppearance 的一个班轮:
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UIImagePickerController class]]] setTintColor:[UIColor redColor]];