【发布时间】:2013-03-03 04:35:04
【问题描述】:
只是想知道,我通过以下方式自定义了 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 ;
}
但是现在,我对按钮背景图像没有阴影/光泽效果....
有没有办法让它自动完成,或者我必须以编程方式完成?
编辑:
【问题讨论】:
-
请分享标准
UIBarButtonItem的截图,你不能只用一张图片。 -
好的,如图所示,不再有阴影/光泽。这可能是正常行为,只是想知道我是否可以让 iOS 自动执行此操作...
-
在我看来,标准按钮具有相同的高度,请注意光泽效果的外观 - 它始终是水平的(据我所知)。在这种情况下,您需要在图像上添加光泽效果并让它在不损失质量的情况下缩放(提供插图以覆盖边框和角落区域)。运行速度快,看起来很棒,我认为不需要为此使用甚至编写任何特殊代码。
-
您是否尝试过先调用 [super] 方法来获取 UIBarButtonItem,然后将您的自定义添加到返回的按钮而不是创建一个全新的按钮项?
-
@A-Live:当然,我可以手动完成,只是不能保证具有相同的图像质量或相同的渐变。对于 AC1:不,我没有尝试(加上这是一个类方法),无论如何,因为它是直接分配,所以运行时应该负责调用超类,不是吗?
标签: ios customization uibarbuttonitem look-and-feel