我正在使用外观API来自定义我的UIBarButtonItems的外观。
我目前需要让我的按钮看起来像这样:
在iOS5中你有这个我正在使用的方法:
UIImage *button = [[UIImage imageNamed:@"btn"]
resizableImageWithCapInsets:UIEdgeInsetsMake(3, 3, 3, 3)];
[[UIBarButtonItem appearance] setBackgroundImage:button forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
但是这会平铺图像的非加盖部分而不是拉伸,这给了我:
iOS 6有一个新方法
resizableImageWithCapInsets:resizingMode:
使用它可以指定'拉伸'调整大小模式,但它不适用于iOS5。
如何使按钮拉伸而不是平铺iOS5图像的中心?
答案 0 :(得分:0)
事实证明这在iOS5中是不可能的,如果设置样式,按钮应始终使用水平样式渐变,因为图像将始终平铺。我最终改变了渐变方向。
答案 1 :(得分:0)
如果需要拉伸,可以使用iOS5旧的和不推荐的stretchableImageWithLeftCapWidth:topCapHeight:
方法:
UIImage* (^makeStretchableImage)(UIImage*, CGSize) = nil;
if ([UIImage instancesRespondToSelector:@selector(resizableImageWithCapInsets:resizingMode:)])
{
// If resizableImageWithCapInsets:resizingMode: is available, use it
makeStretchableImage = ^(UIImage* image, CGSize inset) {
return [image resizableImageWithCapInsets:UIEdgeInsetsMake(inset.height, inset.width, inset.height, inset.width) resizingMode:UIImageResizingModeStretch];
};
}
else
{
// Else, we are on an older iOS release, use the deprecated iOS5 method instead
makeStretchableImage = ^(UIImage* image, CGSize inset) {
return [image stretchableImageWithLeftCapWidth:inset.width topCapHeight:inset.height];
};
}
UIImage* stretchableImage1 = makeStretchableImage(originalImage1, CGSizeMake(5,2));
UIImage* stretchableImage2 = makeStretchableImage(originalImage2, CGSizeMake(15,4));
UIImage* stretchableImage3 = makeStretchableImage(originalImage3, CGSizeMake(8,5));