iOS 15中UIButton图片行为是否发生了改变?

17

我的代码非常简单; 我有一个指向button的UIButton outlet,并在代码中设置它的图像:

我的代码很简单;我有一个指向一个 UIButton 的 outlet,button,并且我正在代码中设置它的图像:

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

问题在于它的表现不符合我的预期。我希望按钮图片能够根据按钮大小进行缩放,并且我希望它是一个模板图片(着色为继承的着色颜色)。相反,我看到的是原始图片,并且它是全尺寸的。这是 iOS 15 的变化吗?

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

1个回答

41

这是 iOS 15 中的变化吗?

是和不是。确实在 iOS 15 中有变化,但你遇到的问题是由于 Xcode 13 中的变化导致的。

iOS 15 中的变化是出现了一种全新的配置按钮的方式。这始于为按钮指定四种新的 iOS 15 类型之一:Plain、Gray、Tinted 和 Filled。如果将按钮设置为任何其中一种类型,就表示你选择了新的行为方式。

你看到的问题是因为在 Xcode 13 中,当你在Storyboard中创建一个按钮时,它给按钮指定其中一种类型:Plain,所以你在不知情的情况下选择了新的行为方式!

解决方法是,如果你想要旧的行为方式,需要将“风格”弹出菜单(在属性检查器中)从“Plain”更改为“Default”。现在你拥有一个旧样式的按钮,并且它将按照你习惯的方式运作。

(当然,从长远来看,你将想采用新的行为方式。我只是在解释表面上的行为变化。)


3
在弄清楚这个之前,我快被搞疯了。如果你希望在Storyboard中使用旧式的UIButton行为(适用于Xcode 13和iOS 15),请在添加UIButton后更改样式->默认。 - sabiland
我希望我能够多次点赞,因为我浪费了很多时间尝试弄清楚正在发生什么。 - Zaheer Moola
以往的方式。只是不要选择新的按钮配置。 - matt
你说得对,我原本以为在 iOS 15 中默认会分配配置,但结果是我在自定义的 UIButton 初始化器中进行了操作。虽然浪费了几个小时,但我终于可以再次制作一个带图像的正方形按钮了,耶! - Adam
此外,UIButton标记在XCode 13和iOS 15组合中不起作用。您给UIButton的标记不会保留!标记以非常奇怪的方式更改自己。但是,如果您将标记保留在变量中,则可以保持不变。因此,我认为可能还有更奇怪的事情围绕着这个问题。 - Ahmet Akkök
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接