UIButton 内的 AspectFit 图像

AspectFit image inside an UIButton

我有一张像这样的图片

但它应该是这样的:

我添加了行:cameraUIButton.imageView?.contentMode = .scaleAspectFit

它不起作用但是如果我点击它适合的按钮!! 当您单击重新计算图像拟合的按钮时,swift 中附加了什么?

我已经试过了

        cameraUIButton.setNeedsDisplay()
        cameraUIButton.imageView?.setNeedsDisplay()
        cameraUIButton.imageView?.layoutIfNeeded()
        cameraUIButton.layoutIfNeeded()
        self.view.layoutIfNeeded()

全部投入

viewDidLoad()
viewWillAppear()
viewDidAppear()

点击按钮没有任何作用,我还能尝试什么?

当您执行 cameraUIButton.imageView?.contentMode = .scaleAspectFit 时,它确保图像被缩放以适合视图的框架,在本例中为按钮。

试试 cameraUIButton.imageView?.contentMode = .aspectFit 它会保留原始图像而不拉伸它。

我找到了解决方案!!
您需要添加

cameraUIButton.imageView?.adjustsImageSizeForAccessibilityContentSizeCategory = true

所以在按钮内 aspectFit 矢量图像的完整代码是:

cameraUIButton.imageView?.contentMode = .scaleAspectFit
cameraUIButton.imageView?.adjustsImageSizeForAccessibilityContentSizeCategory = true

我不知道为什么它不是 true 默认情况下,因为如果您单击按钮或设置动画,它就会变成它。

试试这个方法

button.contentHorizontalAlignment = .fill
button.contentVerticalAlignment = .fill
button.imageView?.contentMode = .scaleAspectFit
  1. 继续故事板给它一个固定的宽度和高度
  2. 根据您的看法,给出的是水平或垂直约束。
  3. 如果你执行这些步骤你会得到你的图像,而且它在所有设备上都能正常工作,不要忘记检查 clipOutOfBounds