UIButton 图像行为在 iOS 15 中发生了变化?

UIButton image behavior changed in iOS 15?

我的代码很简单;我有一个 UIButton 的插座,button,我在代码中设置它的图像:

    let jack = UIImage(named:"jack.png")
    self.button.setImage(jack, for:.normal)

问题是这与我预期的不一样。我希望按钮图像的大小缩小到按钮大小,并且我希望它是 template 图像(使用继承的色调着色)。相反,我看到的是 原始 图像,它是全尺寸的。这是 iOS 15 的变化吗?

似乎是,因为如果我将项目的部署目标设置为 iOS 14 并在 iOS 14 模拟器上将其 运行 设置为 iOS 14,我确实会得到我期望的行为.

Is this a change in iOS 15?

是也不是。 iOS 15 中确实有变化,但您遇到问题的原因是 Xcode 13 中的变化。

iOS15 中的变化是有一种全新的按钮配置方式。首先为按钮提供四种新的 iOS 15 种类型之一:普通、灰色、有色和填充。如果您将按钮设置为具有这些类型中的任何一种,则表示您选择了新行为。

您看到的问题是因为,在 Xcode 13 中,当您在情节提要中制作按钮时,确实 为按钮提供了其中一种类型: 清楚的。所以你在不知情的情况下选择了新的分配!

如果您想要旧的行为,解决方案是将“样式”弹出菜单(在“属性”检查器中)从“普通”更改为“默认”。现在您有了一个旧式按钮,它将按照您习惯的方式运行。

(当然,在漫长的 运行 中,您会想要采用新的分配。我只是在解释行为上的明显变化。)