8

我设法改变了navigation bar按钮的颜色,但按钮的颜色仍然是黑色。有没有办法改变按钮的颜色?见下图。

更新:抱歉,由于版权问题,不得不删除图像。

4

10 回答 10

20

没有您的自定义图像是不可能的。

但是您应该在创建导航控制器后立即更改色调颜色:

 UIImagePickerController *pickerImg = [[UIImagePickerController alloc] init];
pickerImg.navigationBar.barStyle = UIBarStyleBlackOpaque; // Or whatever style.
// or
pickerImg.navigationBar.tintColor = [UIColor whateverColor];
于 2012-09-17T10:06:46.163 回答
1

@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]];
    }
}
于 2012-09-17T11:26:30.260 回答
1

您可以隐藏导航栏,并使用 imageview 创建自定义导航栏并在其上放置 2 个按钮。通过这样做,您可以根据您的要求更改按钮的图像/颜色以及图像视图。

隐藏导航栏:

 self.navigationController.navigationBarHidden=YES;

然后在 XIB 中:创建一个 44 高度的视图,在其上放置 imageview 并在其上放置 2 个按钮和 1 个标签。

希望这能解决您的问题。

于 2012-09-17T10:54:51.987 回答
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];
于 2015-01-19T11:10:19.797 回答
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]];
于 2013-03-26T17:31:03.750 回答
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;
    }
}
于 2015-07-07T04:14:55.273 回答
0

UIAppearance您可以使用iOS 5 及更高版本的新 API 实现所需的自定义。本教程基本上向您展示了如何。

于 2012-09-17T09:39:08.817 回答
0

您必须为 BarButtonItem 定义一个 UIButtonTypeCustom 按钮。

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

有关更多信息,请查看这篇文章:UIBarButtonItem with color?

于 2012-09-17T10:11:57.163 回答
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()
于 2015-05-13T02:23:01.673 回答
0

使用 UIAppearance 的一个班轮:

[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UIImagePickerController class]]] setTintColor:[UIColor redColor]];
于 2017-10-27T09:02:46.757 回答