如何防止UIButton的imageView占用整个UIButton?

我正在尝试使用图标和标题以编程方式制作UIButton (默认情况下,图标应位于标题左侧)。 但是,图标的尺寸相当大,所以当我使用myButton.setImage()图标拉伸并占用整个button时,标题也会消失。

我也尝试设置imageEdgeInsets但它不会使标题出现。

那么有没有办法让图标变小(也许.scaleToFit )和标题再次出现?

如果没有,我应该输出多less的图标(相对于button)?

尝试添加这个扩展到UIImage

 extension UIImage { func resizeToBoundingSquare(_ boundingSquareSideLength : CGFloat) -> UIImage { let imgScale = self.size.width > self.size.height ? boundingSquareSideLength / self.size.width : boundingSquareSideLength / self.size.height let newWidth = self.size.width * imgScale let newHeight = self.size.height * imgScale let newSize = CGSize(width: newWidth, height: newHeight) UIGraphicsBeginImageContext(newSize) self.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight)) let resizedImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext(); return resizedImage! } } 

假设你有一个你想resize为40×40的图标。 只要这样做:

 var myIcon = UIImage(named: image) myIcon = myIcon.resizeToBoundingSquare(40)