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背景图片
无法在 xcuitestcase 的 uitableviewcell 内的 uistackview 中找到带有图像的 uibutton