0

我有以下图像代表我的按钮:

在此处输入图像描述

我想使用该图像创建一个将其用作背景的按钮,但这比我提供的图像宽得多。

以下是我尝试过的两种方法:

  UIButton *emailSupportButton = [[UIButton alloc] initWithFrame:CGRectMake(25, 315, 200, 60)];
  [emailSupportButton setTitle:@"Email Support" forState:UIControlStateNormal];
  [emailSupportButton setImage:[UIImage imageNamed:@"toolbar-button"] forState:UIControlStateNormal];

此方法导致按钮图像不会被拉伸并准确显示 .png 的正常显示方式。

我尝试过的另一种方法是设置背景图像,就像这样......

  UIButton *emailSupportButton = [[UIButton alloc] initWithFrame:CGRectMake(25, 315, 200, 60)];
  [emailSupportButton setTitle:@"Email Support" forState:UIControlStateNormal];
  [emailSupportButton setBackgroundImage:[UIImage imageNamed:@"toolbar-button"] forState:UIControlStateNormal];

这种方法以一种非常难看的方式拉伸图像,而不是达到预期的效果,导致按钮几乎是椭圆形的,边框非常难看。

问题是我没有使用正确的方法来创建自定义按钮,还是我的图像不适合我要完成的任务?我的图像是否应该是矩形而不包括按钮的边框,让 UIButton 为我处理边框/舍入?我的图像是否应该已经是按钮的大小(这似乎有点限制)?

4

1 回答 1

1

您列出的第二种方法(代码方面)是您想要的。您缺少的是可拉伸图像。尝试这个:

UIButton *emailSupportButton = [[UIButton alloc] initWithFrame:CGRectMake(25, 315, 200, 60)];
[emailSupportButton setTitle:@"Email Support" forState:UIControlStateNormal];
UIImage *backgroundImage = [UIImage imageNamed:@"toolbar-button"];
CGSize size = backgroundImage.size;
backgroundImage = [backgroundImage stretchableImageWithLeftCapWidth:size.width/2.0 topCapWidth:size.height/2.0];
[emailSupportButton setBackgroundImage:backgroundImage forState:UIControlStateNormal];

如果您仅在 iOS 5 及更高版本上进行部署,那么您将希望使用新的-[UIImage resizableImageWithCapInsets:(UIEdgeInsets)capInsets];iOS 6 还添加-[UIImage resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode];

于 2012-10-18T16:24:05.020 回答