如何调整UIButton的imageSize?
如何调整UIButton的图像大小? 我正在像这样设置图像:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
然而,这充满了图像的全部button,我如何使图像更小?
如果我正确理解你想要做什么,你需要玩button图像边缘embedded。 就像是:
myLikesButton.imageEdgeInsets = UIEdgeInsetsMake(top, left, bottom, right);
蒂姆的回答是正确的,但是我想补充一点,因为在我的情况下,有一个更简单的解决scheme。
我正在寻找设置UIButton
图像插入,因为我没有意识到,我可以在button的UIImageView
上设置内容模式,这将阻止需要使用UIEdgeInsets和硬编码值完全。 只需访问button上的底层imageview并设置内容模式:
myButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
看到UIButton不听内容模式设置?
Swift 3
myButton.imageView?.contentMode = .scaleAspectFit
您可以使用imageEdgeInsets
属性矩形周围的button图像的插入或开始边距。
[self.btn setImageEdgeInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
积极的价值缩小或embedded,边缘移动。 负值会扩大或突破该边缘。
下面是Swift版本:
myButton.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
你也可以从这样的界面生成器来做到这一点。
我认为这是有帮助的。
如果你的图片太大(你不能/不想把图片缩小),前两个答案的组合就很好。
addButton.imageView?.contentMode = .scaleAspectFit addButton.imageEdgeInsets = UIEdgeInsetsMake(15.0, 15.0, 15.0, 5.0)
除非您将图像插入正确,否则图像将偏斜而不更改contentMode
。
在Tim C的答案的帮助下,我能够使用Swift在UIButton
上创build一个扩展,允许您使用.setImage()
函数和一个额外的frame
参数来指定图像帧
extension UIButton{ func setImage(image: UIImage?, inFrame frame: CGRect?, forState state: UIControlState){ self.setImage(image, forState: state) if let frame = frame{ self.imageEdgeInsets = UIEdgeInsets( top: frame.minY - self.frame.minY, left: frame.minX - self.frame.minX, bottom: self.frame.maxY - frame.maxY, right: self.frame.maxX - frame.maxX ) } } }
使用这个,如果你想将UIButton
的框架设置为CGRectMake(0, 0, 64, 64)
,并用CGRectMake(8, 8, 48, 48)
的框架将它的图像设置为myImage
,你可以使用
let button: UIButton = UIButton(frame: CGRectMake(0, 0, 64, 64)) button.setImage( myImage, inFrame: CGRectMake(8, 8, 48, 48), forState: UIControlState.Normal )
Swift 3:
button.setImage(UIImage(named: "checkmark_white"), for: .normal) button.contentVerticalAlignment = .fill button.contentHorizontalAlignment = .fill button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10)
更新了Swift 3
yourButtonName.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10)
Swift 3
我将myButton的宽度和高度设置为40,EdgeInsetsMake的填充是15。 我build议添加一个背景颜色到你的button来查看实际的填充。
myButton.backgroundColor = UIColor.gray // sample color to check padding myButton.imageView?.contentMode = .scaleAspectFit myButton.imageEdgeInsets = UIEdgeInsetsMake(15, 15, 15, 15)
我认为,你的图像大小也是一样的button大小,然后你把图像的button的背景,如:
[myLikesButton setBackgroundImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
你的桅杆有相同的图像和button的大小,我希望你能理解我的观点。