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

Posted

技术标签:

【中文标题】iOS 15 中的 UIButton 图像行为发生了变化?【英文标题】:UIButton image behavior changed in iOS 15? 【发布时间】:2021-10-04 16:20:51 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

这是 iOS 15 的变化吗?

是和不是。 iOS 15 确实发生了变化,但您遇到问题的原因是 Xcode 13 发生了变化。

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

您看到的问题是,在 Xcode 13 中,当您在情节提要中创建一个按钮时,它确实为该按钮提供了以下类型之一:Plain。所以你在不知不觉中选择了新的分配!

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

(当然,从长远来看,你会想要采用新的分配方式。我只是在解释行为的明显变化。)

【讨论】:

在我弄清楚这一点之前,我已经疯了。如果您希望在情节提要中使用旧式 UIButton 行为(Xcode 13、iOS 15),请在添加 UIButton 后更改 Style -> Default。 我希望我能多次投票,浪费了这么多时间试图弄清楚发生了什么 好的,但是你如何用代码做到这一点?没有名为defaultUIButton.ButtonType 案例@ 一如既往的做法。只是不要选择使用新的按钮配置。 你说得对,我确信配置是在 iOS 15 上默认分配的,但事实证明,我是在自定义 UIButton 初始化程序中进行的。浪费了几个小时,但我终于可以再次制作一个带有图像的方形按钮了,耶!

以上是关于iOS 15 中的 UIButton 图像行为发生了变化?的主要内容,如果未能解决你的问题,请参考以下文章

ios - UIButton 突出显示设置行为怪异

iOS5 上奇怪的 UIButton 行为

如何使用 ios 中的约束使视图位置动态化?

iOS7 UIButton图像闪烁

UIButton iOS 15 中的一行

iOS UIButton在将背景图像设置为nil后消失