使用swift,是否可以访问可访问性的反转颜色功能?

时间:2015-07-26 17:30:36

标签: ios xcode swift

苹果已经放入手机中的功能一般>可访问性>反转颜色,我可以在我的程序中以某种方式使用它,以便当用户触摸屏幕时颜色反转?

3 个答案:

答案 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()

相关问题