图像未正确使用CapInsets调整大小

时间:2013-03-30 18:39:43

标签: iphone ios objective-c ios5 uiimage

我创建了一个单选按钮,如下所示:

signupButton = [[UIButton alloc] initWithFrame:CGRectMake(10,(facebookLoginButton.bounds.size.height + 40),300,50)];
signupButton.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
UIImage *signupButtonImage = [[UIImage imageNamed:@"Signup"]
                              resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
[signupButton setBackgroundImage:signupButtonImage forState:UIControlStateNormal];

按钮的框架为每个300x50。我创建了一个图像(对于Retina设备)为22(w)x100(h)px。

图像为22像素,包括10px圆角和2px,用于可重复的中间部分。

我尝试使用上面的代码实现拉伸,其中insets为0,10,0,10,但这并没有按预期延伸。

enter image description here

Actual image

有人可以解释插图应该是什么吗?另外如何解决这些问题,我找不到有关如何实际计算插图应该是什么的任何有用信息?我已经阅读了关于此的Apple文档,但我不明白如何解决这些问题。

2 个答案:

答案 0 :(得分:0)

您的图片尺寸为22x100,但它是视网膜图像。

这意味着磅值为11x50 插图应为UIEdgeInsetsMake(5.0f, 5.0f, 5.0f, 5.0f)

答案 1 :(得分:0)

使用以下代码创建可伸展的图像,并将其分配给相应的UIImageView

UIImage *bgImage = [[UIImage imageNamed:@"Signup"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];

您需要正确计算9补丁图像的TopCap和LeftCap。 祝你好运。