1

我在使用/理解resizableImageWithCapInsets

我设置了一个按钮,如下所示:

facebookLoginButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 300,50)];
facebookLoginButton.autoresizingMask = UIViewAutoresizingFlexibleWidth;

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"]
                           resizableImageWithCapInsets:UIEdgeInsetsMake(20,90,20,56)];
[facebookLoginButton setBackgroundImage:facebookButton forState:UIControlStateNormal];

[facebookLoginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[facebookLoginButton setTitle:NSLocalizedString(@"FacebookLoginButton", "Facebook Login Button") forState:UIControlStateNormal];
[facebookLoginButton setTitleShadowColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.35] forState:UIControlStateNormal];
[facebookLoginButton addTarget:self action:@selector(facebookLoginButton:) forControlEvents:UIControlEventTouchUpInside];

如您所见,按钮视图的框架为 300x50 像素。我已经为视网膜创建了一个图像(稍后将按比例缩小)。

该图像是在 PS 中创建的 png,大小为 144x100 像素。这是框架高度(对于 uibutton)和 Facebook F 所需宽度的两倍,并带有空间。这个想法是让 F 在左侧保持静止,而可拉伸部分如下所示。

在此处输入图像描述

如果有帮助,这是图像本身;

在此处输入图像描述

这是目前的结果:

在此处输入图像描述

我正在尝试找出要输入的正确插图。我已经搜索了大量关于此的教程,但没有一个解释足以让我了解插图的实际工作原理。如果有人可以解释这一点或链接到有关如何计算它们的教程,那就更好了。

我目前已将顶部和底部设置为 0,因为理论上它们不需要重复,只是静态左侧大于静态右侧。右边的插图仅适用于圆形边框,中间部分需要重复。

4

1 回答 1

0

如果您使用视网膜图像,请确保您使用@2x.
另请注意,您需要以单位(而不是像素)指定意图。

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"]
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0,40,0,10)];
于 2013-03-30T01:33:20.250 回答