苹果已经放入手机中的功能一般>可访问性>反转颜色,我可以在我的程序中以某种方式使用它,以便当用户触摸屏幕时颜色反转?
答案 0 :(得分:4)
我不知道如何自动执行此操作,但您可以使用UIColor上的扩展程序并访问子视图来自行反转颜色吗?
extension UIColor {
var inverted: UIColor {
var r: CGFloat = 0.0, g: CGFloat = 0.0, b: CGFloat = 0.0, a: CGFloat = 0.0
UIColor.red.getRed(&r, green: &g, blue: &b, alpha: &a)
return UIColor(red: (1 - r), green: (1 - g), blue: (1 - b), alpha: a) // Assuming you want the same alpha value.
}
}
然后,如果您想更新视图的特定属性,您可以执行以下操作:
view.subviews.map { $0.backgroundColor = $0.backgroundColor.invertedColor }
// And so on to change things like the tint color, text color, etc.
抱歉,我不知道如何直接这样做,但在此之前,这比我想的更好。
答案 1 :(得分:1)
我知道没有这样的API调用,坦率地说,如果它可用,我会感到惊讶。通常,Apple不会为单个应用程序提供系统范围的设置。但是,您可以自己实现 - 但仅适用于您自己的应用。
答案 2 :(得分:0)
现在这可以通过 SwiftUI 的内置方法来完成; colorInvert()
。
colorInvert()
修饰符反转视图中的所有颜色,以便每种颜色显示为其补色。例如,蓝色转换为黄色,白色转换为黑色。
见:https://developer.apple.com/documentation/swiftui/view/colorinvert()