【问题标题】:Change the background color of a UIBarButtonItem in ios 7在 ios 7 中更改 UIBarButtonItem 的背景颜色
【发布时间】:2014-10-18 06:03:14
【问题描述】:

我有一个带有正确 UIBarButtonItem 的 UINavigationBar。

如何仅更改按钮的背景颜色(而不是文本)?

UIBarButtonItem *postButton = [[UIBarButtonItem alloc] initWithTitle:@"POST" style:UIBarButtonItemStylePlain target:self action:@selector(postButtonPressed:)];

// Changes text color
postButton.tintColor = [UIColor blueColor];

如何改变背景颜色?

【问题讨论】:

    标签: ios ios7 uinavigationcontroller uibarbuttonitem


    【解决方案1】:

    使用故事板或XIB,您可以直接将UIButton添加到导航栏并更改UIButton背景颜色。

    【讨论】:

    • 我认为它是解决这个问题的最佳方案。
    【解决方案2】:

    为此使用appearance 代理,

    使用您喜欢的颜色创建一个 1x1 像素的图像。在这种情况下,该图像的名称是“icons_gb.png”。然后将以下代码添加到您的 AppDelegate.m 。图像颜色将在按钮的背景中重复。

    UIImage *btnBg = [[UIImage imageNamed:@"icons_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
    
    [[UIBarButtonItem appearance] setBackgroundImage:btnBg 
                                            forState:UIControlStateNormal
                                          barMetrics:UIBarMetricsDefault];
    

    【讨论】:

    • 我只是将它放在我想要更改的一个视图中并且它有效。
    • 你可以用UIEdgeInsetsZero代替UIEdgeInsetsMake(0, 0, 0, 0)
    【解决方案3】:

    您可以通过以下方式更改它:

    yourNavigationBar.barTintColor = [UIColor yellowColor];
    

    导航栏的颜色也改变了。

    如果您只想更改 UIBarButtonItem,请使用我的自定义类:

    UIBarButtonItem+Custom.h

    #import <UIKit/UIKit.h>
    
    @interface UIBarButtonItem (Custom)
    + (UIBarButtonItem *) barItemWithImage:(UIImage *)img size:(CGSize)size target:(id)target action:(SEL)selector;
    @end
    

    UIBarButtonItem+Custom.m

    #import "UIBarButtonItem+Custom.h"
    
    @implementation UIBarButtonItem (Custom)
    + (UIBarButtonItem *) barItemWithImage:(UIImage *)img size:(CGSize)size target:(id)target action:(SEL)selector
    {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    
        [button setImage:img forState:UIControlStateNormal];
    
        button.frame= CGRectMake(0.0, 0.0, size.width, size.height);
    
        [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
    
        UIBarButtonItem *forward = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
    
        return forward;
    }
    @end
    

    【讨论】:

    • 这是酒吧。我只想更改正确的按钮颜色,而不是整个栏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多