使用capinsets调整图像大小

时间:2013-03-29 12:11:42

标签: ios ios5 uibutton uiimage image-resizing

我设置了一个这样的按钮:

// Create facebook login button
facebookLoginButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 300,50)];
facebookLoginButton.autoresizingMask = UIViewAutoresizingFlexibleWidth;
//NSLog(@"facebook button view height is %f",facebookLoginButton.bounds.size.height);
//NSLog(@"facebook button view width is %f",facebookLoginButton.bounds.size.width);

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"]
                           resizableImageWithCapInsets:UIEdgeInsetsMake(16,140,86,92)];
[facebookLoginButton setBackgroundImage:facebookButton forState:UIControlStateNormal];

我在Photoshop中为按钮创建了一个图像,该按钮为200(w)x100(h)px。首先,对于适合登录框架高度为50的按钮,iphone4 / 5上使用的视网膜图像是否正确?另一个宽度与拉伸无关。

其次,下面是一个示例图像。我似乎无法找出'resizableImageWithCapInsets:UIEdgeInsetsMake'的正确插图。我该如何解决这个问题?是否有关于如何执行此操作的教程,除了我从SO看到的Android示例。

enter image description here

2 个答案:

答案 0 :(得分:2)

由于您是明确设置按钮的框架,并且由于您正在创建自己的图像,因此您不需要可调整大小的图像。你的按钮是300乘50,所以制作一个300乘50的图像(以及一个600 x 100的图像用于双分辨率设备),并将按钮的背景图像设置为它。

但是,我还会给出一个代码示例。对于您实际给出的图像,如果将其命名为FacebookLogin@2x.png以便将其用作双分辨率图像,则要使用的值为resizableImageWithCapInsets:UIEdgeInsetsMake(0,50,0,50)。结果如下:

enter image description here

答案 1 :(得分:1)

我编写了一个脚本来生成带有cap insets的可调整大小的图像。很有用。 https://github.com/kejinlu/capimage