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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止UIButton的imageView占用整个UIButton?相关的知识,希望对你有一定的参考价值。

我试图以编程方式使用图标和标题制作UIButton(默认情况下,图标应位于标题旁边的左侧)。但是,图标的大小非常大,因此当我使用myButton.setImage()时,图标会拉伸并占据整个按钮,标题也会消失。

I also tried to set imageEdgeInsets but it does not make the title appear. So is there any way to make the icon smaller (maybe .scaleToFit) and the title appear again? If not, how small the icon (relatively to the button) should I export?
答案

尝试将此扩展名添加到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!
    }
}

假设您有一个1024x1024图标,您希望将其调整为40x40。这样做:

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

以上是关于如何防止UIButton的imageView占用整个UIButton?的主要内容,如果未能解决你的问题,请参考以下文章

如何缩放 UIButton 的 imageView?

如何识别 UIAutomation 中添加到 UIButton 的子视图(imageviews)?

如何使用 Imageview 实现切换行为,没有 UIButton

根据状态更改 UIButton 中 ImageView 的 tint 颜色

如何使用 Swift 以编程方式创建 Hexagon UIButton 或 Clickable ImageView

如何让 imageView 占用 CollectionView 单元格?