如何防止UIButton的imageView占用整个UIButton?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止UIButton的imageView占用整个UIButton?相关的知识,希望对你有一定的参考价值。
我试图以编程方式使用图标和标题制作UIButton
(默认情况下,图标应位于标题旁边的左侧)。但是,图标的大小非常大,因此当我使用myButton.setImage()
时,图标会拉伸并占据整个按钮,标题也会消失。
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?的主要内容,如果未能解决你的问题,请参考以下文章
如何识别 UIAutomation 中添加到 UIButton 的子视图(imageviews)?
如何使用 Imageview 实现切换行为,没有 UIButton
根据状态更改 UIButton 中 ImageView 的 tint 颜色