Ios 设置UIButton的边框,但保持图像大小不变

Ios 设置UIButton的边框,但保持图像大小不变,ios,objective-c,uibutton,Ios,Objective C,Uibutton,我的应用程序中有一个UIButton,它非常小。有时很难利用它。有没有办法在按钮周围留一个20px的边距,使图像保持相同的大小?这是我的密码: self.helpButton= [UIButton buttonWithType:UIButtonTypeCustom]; [self.helpButton setImage:[UIImage imageNamed:@"Info Button.png"] forState:UIControlStateNormal]; [self.helpButton

我的应用程序中有一个UIButton,它非常小。有时很难利用它。有没有办法在按钮周围留一个20px的边距,使图像保持相同的大小?这是我的密码:

self.helpButton= [UIButton buttonWithType:UIButtonTypeCustom];
[self.helpButton setImage:[UIImage imageNamed:@"Info Button.png"] forState:UIControlStateNormal];
[self.helpButton addTarget:self
           action:@selector(showHelp)
 forControlEvents:UIControlEventTouchUpInside];

if ([[ UIScreen mainScreen ] bounds ].size.height == 568 ) {
    self.helpButton.frame = CGRectMake(280.0, 528.0, 20, 20);
} else {
    self.helpButton.frame = CGRectMake(280.0, 440.0, 20, 20);
}

基本上,我想要一个更大的区域,但是保持按钮的大小不变。

将UIButton子类化并覆盖backgroundRectForBounds:或contentRectForBounds:或任何适用于您的用例的内容。

将UIButton子类化并覆盖backgroundRectForBounds:或contentRectForBounds:或任何适用于您的用例的内容。

尝试使用setImageEdgeInsets。看看这个

  if ([[ UIScreen mainScreen ] bounds ].size.height == 568 ) {
         self.helpButton.frame = CGRectMake(280.0, 528.0, 40, 40);
  } else {
         self.helpButton.frame = CGRectMake(280.0, 440.0, 40, 40);
  }

  [self.helpButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];

尝试使用setImageEdgeInsets。看看这个

  if ([[ UIScreen mainScreen ] bounds ].size.height == 568 ) {
         self.helpButton.frame = CGRectMake(280.0, 528.0, 40, 40);
  } else {
         self.helpButton.frame = CGRectMake(280.0, 440.0, 40, 40);
  }

  [self.helpButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];

如果你的按钮背景颜色是清晰的,你可以增加按钮的大小。我最近为一个带有小图像的删除按钮做了以下操作:

    UIImage *deleteImage = [UIImage imageNamed:@"btnDelete"];

    CGSize btnSize = CGSizeMake(deleteImage.size.width*2, deleteImage.size.height*2);

    self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [_deleteButton setImage:deleteImage forState:UIControlStateNormal];

    _deleteButton.frame = CGRectMake(0,0,btnSize.width,btnSize.height);

如果你的按钮背景颜色是清晰的,你可以增加按钮的大小。我最近为一个带有小图像的删除按钮做了以下操作:

    UIImage *deleteImage = [UIImage imageNamed:@"btnDelete"];

    CGSize btnSize = CGSizeMake(deleteImage.size.width*2, deleteImage.size.height*2);

    self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [_deleteButton setImage:deleteImage forState:UIControlStateNormal];

    _deleteButton.frame = CGRectMake(0,0,btnSize.width,btnSize.height);

这是唯一的办法吗?这似乎很复杂,这是一个意见问题。一个人的复杂是另一个人的简单。为什么不试试呢?这是唯一的方法吗?这似乎很复杂,这是一个意见问题。一个人的复杂是另一个人的简单。为什么不试试呢?这改变了按钮的大小这改变了按钮的大小问题是,我的图像很大,我正在将它缩小到20px x 20px。我建议在你的项目中添加一个正确大小的图像,然后使用它。或者,您可以创建一个单独的UIImageView,大小与您想要的一样,并将其添加为按钮的子视图,而不是设置按钮的图像。此外,这不会将图像放在框架的右上角吗?您只需将imageView的中心设置为按钮的中心。事实上,我的图像非常大,我正在将它缩小到20px x 20px,我建议您在项目中添加一个大小正确的图像,然后使用它。或者,您可以创建一个单独的UIImageView,按照您想要的方式调整大小,并将其添加为按钮的子视图,而不是设置按钮的图像。此外,这不会将图像放在框架的右上角吗?您只需将imageView的中心设置为按钮的中心