UIButton 内的 AspectFit 图像

Posted

技术标签:

【中文标题】UIButton 内的 AspectFit 图像【英文标题】:AspectFit image inside an UIButton 【发布时间】:2019-09-12 10:08:33 【问题描述】:

我有一张像这样的图片

但它应该是这样的:

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

它不起作用但是如果我点击它适合的按钮! 当您单击重新计算图像适合度的按钮时,会迅速添加什么?

我已经试过了

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

一切都在

viewDidLoad()
viewWillAppear()
viewDidAppear()

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

【问题讨论】:

你添加的cameraUIButton,我的意思是在导航栏或者其他地方 它在一个简单的 UIView 中 【参考方案1】:

当您执行cameraUIButton.imageView?.contentMode = .scaleAspectFit 时,它会确保图像被缩放以适合视图的框架,在这种情况下为按钮。

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

【讨论】:

Type 'UIView.ContentMode' has no member 'aspectFit'【参考方案2】:

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

cameraUIButton.imageView?.adjustsImageSizeForAccessibilityContentSizeCategory = true

因此,在按钮内调整矢量图像的完整代码是:

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

我不知道为什么默认不是true,因为如果你点击按钮或者你给它设置动画,它就会转向它。

【讨论】:

【参考方案3】:

试试这个方法

button.contentHorizontalAlignment = .fill
button.contentVerticalAlignment = .fill
button.imageView?.contentMode = .scaleAspectFit

【讨论】:

我也试过了,但是没用,唯一有效的是cameraUIButton.imageView?.adjustsImageSizeForAccessibilityContentSizeCategory = true【参考方案4】:
    继续故事板给它一个固定的宽度和高度 give 是根据您的视图进行水平或垂直约束。 如果您执行这些步骤,您将获得您的图像,并且它在所有设备上都可以正常工作,不要忘记检查 clipOutOfBounds

【讨论】:

如果您固定宽度和高度,它将不会根据设备的屏幕宽度进行调整,因此效果不佳。我也找到了解决方案,我只需要等待检查我自己的答案。 你可以通过给予内容拥抱优先级来调整它,按照我说的去做,它对我有用,固定的宽度和高度帮助你保持你的图像在按钮中,休息你玩自动布局

以上是关于UIButton 内的 AspectFit 图像的主要内容,如果未能解决你的问题,请参考以下文章

无法更改 UITableViewCell 内的 UIButton 图像

iOS开发中如何设置UIButton的Aspect Fit背景图片

UIImageView:将大小更改为图像大小?

无法在 xcuitestcase 的 uitableviewcell 内的 uistackview 中找到带有图像的 uibutton

如何将imageview内的图像移动到imageView的上端?

UIButton 内的 UIImageView 具有默认填充 - 如何删除?