如何在 iOS 14 中更改 UIPickerView 选择的色调颜色?

Posted

技术标签:

【中文标题】如何在 iOS 14 中更改 UIPickerView 选择的色调颜色?【英文标题】:How to change UIPickerView's selected tint color in iOS 14? 【发布时间】:2020-11-18 00:28:46 【问题描述】:

ios 14 的一项更改包括将 UIPickerView 更改为具有浅灰色的选定行色调。我想知道是否有任何方法可以改变这个甚至访问这个属性。我查看了故事板的属性检查器,似乎没有任何东西。与代码相同,自动完成没有显示任何选定的色调相关属性。还浏览了互联网,但由于它是一个相对较新的功能,因此没有任何帮助。在 iOS 14 之前,我可以在下面放置一个带有我选择的颜色的 UIView 来模拟这一点,但这次更新取消了它,因为灰色仍然可见,而且看起来很糟糕。这是一张照片:

https://i.stack.imgur.com/BmoNO.png

我想知道是否有任何真正的方法可以做到这一点。 此外,一个好的解决方案是禁用浅灰色,因为这样我就可以使用上面显示的策略。有什么建议吗?

【问题讨论】:

没有代码,或者你的故事板设置的一些截图,我帮不上什么忙。另外,您是否尝试过运行该应用程序?您的屏幕截图是预览版,并不总是像应用程序本身那样显示。 @GabeSpound 我没有包含代码,因为没有我认为可以工作的属性。而且由于没有这些,因此没有必要进行点测试。如果您的意思是在图片中测试我的解决方案,我确实这样做了,并且与预览相同。 @AlexAghajanov 你签出这个post了吗? @Luffy 我做到了,虽然这几乎是我想要的,但滚动时颜色会消失,并在***停止旋转半秒后重新出现。整体看起来不太好,我希望即使在滚动时也能保持这种颜色。不过谢谢。我想这只是需要添加到 Swift 中的东西。 【参考方案1】:

如果没有更多信息,我不能肯定地说,但是在您的 View Controller 类中,访问 UIPickerView 并且您可以更改它的 tintColorisOpaque 属性。我会想象这样的事情。

pickerView.isOpaque = false
pickerView.tintColor = .clear

【讨论】:

感谢您的回答。不幸的是,这些都不起作用,这有点奇怪,因为 .tintColor 属性根本没有改变任何东西,无论我是从情节提要还是代码中做的。不过还是谢谢你的回答。【参考方案2】:

我查看了子视图。在 UIPickerView 的委托上,在方法 didSelectRow 中我能够设置背景。

pickerView.subviews.last?.backgroundColor = .clear

【讨论】:

抱歉回复太晚了。您的建议对于使灰色消失很有用,但是当使用 .yellow 之类的颜色时,文本会被遮挡。另外,该设置只有在触摸选择器视图后才会激活。

以上是关于如何在 iOS 14 中更改 UIPickerView 选择的色调颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 SwiftUI 和 iOS 14 中的单元格背景颜色?

在新的 DatePicker (iOS14) 中更改字体颜色

在 iOS 14 中更改 UITableViewCell 背景颜色

可以更改 UIPickerView 的全局文本颜色吗?

iOS 14,Swift UI 2 更改 NavigationLink 内选定列表项的背景颜色

有没有办法在 SwiftUI 中更改列表的背景颜色? 2020 (iOS 14)