iOS 系统图标不符合 UIButton 的 UIImageInsets

iOS System Icons not respecting UIButton's UIImageInsets

我正在使用 iOS 的 system icons,这样我就可以在整个项目中拥有一致的用户界面。使用这些图标时我注意到的一件事是,即使我将系统图标设置为 UIButton 的图像,它也不会像普通项目图像那样增长以填充按钮的大小。例如,如果我们有一个非常大的 UIButton,假设高度和宽度为 500,即使 UIButton 的图像插图的左、上、下和右值都设置为 0在界面生成器中,用于按钮图像的系统图标将保持相同的小尺寸。

事实上,系统图标唯一会遵守界面生成器的图像插入说明的情况是当所述插入要求图像本身变小时。

有人知道如何使系统图标在 UIButton 的图像插图方面表现得与普通项目图像相似吗?

如果它是 UIImageView,当您将它的 contentMode 设置为 "Aspect Fit" 时,系统图像会调整自身大小以符合高度和宽度。

问题是您无法在故事板上设置 UIButton.imageViewcontentMode,但您可以通过编程方式设置,

override func viewDidLoad() {
    yourButton.imageView?.contentMode = .scaleAspectFit
    yourButton.contentHorizontalAlignment = .fill
    yourButton.contentVerticalAlignment = .fill
}

您可以使用界面生成器。在右侧的属性检查器中,使用如下控制部分:

以及您已经在使用的故事板中可以使用的代码。