如何让iOS在UIBarButtonItem图像上设置渐变?

Ale*_*lex 5 customization look-and-feel uibarbuttonitem ios

只是想知道,我通过以下方式定制了UIBarButtonItems

+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *buttonImage = [[UIImage imageNamed:@"blabla.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];


    CGRect buttonFrame = [button frame];
    buttonFrame.size.width = 35;
    buttonFrame.size.height = buttonImage.size.height;
    [button setFrame:buttonFrame];

    [button setBackgroundImage:buttonImage forState:UIControlStateNormal];

    [button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

    return buttonItem ;
}
Run Code Online (Sandbox Code Playgroud)

但是现在,我没有按钮背景图像上的阴影/光泽效果....

有没有办法让它自动完成,或者我必须以编程方式完成它?

编辑: 这是一个捕捉,我用一个简单的绿色方块使其更加明显. 没有更多的阴影/光泽效果

Mat*_*tel 0

要以这种方式完全自定义栏按钮,您需要提供“blabla.png”中除平面绿色图像之外的其他内容。

处理此问题的另一种方法是使用图像创建一个带边框样式的按钮。就像是:

UIBarButtonItem* barButton = [UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"blabla.png"] style:UIBarButtonItemStyleBordered target:tgt selector:a];
Run Code Online (Sandbox Code Playgroud)

这种UIBarButtonItemStyleBordered风格赋予它 3D 凸起纽扣外观。如果需要,您可以为其外观着色以匹配您的酒吧。