使用 UIColor 自定义应用外观

17 Mar 2025 | 4 分钟阅读

UIColor 是 NSObject 的一个子类,用于存储 iOS 应用中关于对象颜色和不透明度信息。UIColor 的声明如下所示。

颜色是改善我们应用外观的最重要方面。我们可以使用颜色来帮助用户可视化数据。Apple 提供了在应用中选择颜色的几种方法。两种最常用的颜色识别系统是 RGB 和 HSB。然而,程序员主要使用 RGB(红-绿-蓝)颜色系统。RGB 包含红色、绿色和蓝色颜色的组合,其中每种颜色包含一个介于 0 和 255 之间的值。255 代表全色,而 0 代表无色。

UIColor 类管理应用中使用的颜色。它提供了一系列类属性,可以为 UI 元素(例如标签、文本、按钮和图像)指定系统提供的颜色。我们还可以通过指定十六进制代码或从其他颜色对象提供不同的组件来创建颜色。我们还可以从对象创建基于图案的颜色。

UIColor 方法

UIColor 类提供了以下方法来配置应用外观。

序号方法描述
1func set()此函数用于将后续描边和填充操作的颜色设置为接收器表示的颜色。
2.func setFill()它用于将后续填充操作的颜色设置为接收器表示的颜色。
3.func setStroke()它用于将后续描边操作的颜色设置为接收器表示的颜色。
4.func getHue(UnsafeMutablePointer<CGFloat>?, saturation: UnsafeMutablePointer<CGFloat>?, brightness: UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) -> Bool它返回在 HSB 颜色空间中形成颜色的组件。
5.func getRed(UnsafeMutablePointer<CGFloat>?, green: UnsafeMutablePointer<CGFloat>?, blue: UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) -> Bool它返回在 RGB 颜色空间中形成颜色的组件。
6.func getWhite(UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) -> Bool它返回颜色的灰度组件。
7.func resolvedColor(with: UITraitCollection) -> UIColor它返回从指定特征得到的当前颜色的版本。

UIColor 属性

UIColor 包含以下属性。

序号属性描述
1var cgColor: CGColor它表示与颜色对象对应的 Quartz 颜色。
2var ciColor: CIColor它表示与颜色对象对应的 Core Image 颜色。
3var accessibilityName: String它表示颜色的本地化描述,用于辅助功能属性。

内置 UIColor 预设

Apple 提供了各种内置颜色,如下所示。可以使用类变量访问内置颜色。

Using UIColor to customize app appearance
Using UIColor to customize app appearance

可以使用以下代码分配内置颜色。

正如我们已经提到的,内置颜色是类变量,我们可以直接从 UIColor 类中使用这些颜色。

创建自定义 UIColor 对象

UIColor 类提供了各种初始化器,可用于创建自定义 UIColor。它方便我们创建自己的颜色,这将介于内置颜色之间。

序号初始化器描述
1init(white: CGFloat, alpha: CGFloat)它接受白色组件的 CGFloat 值(介于 0.0 和 1.0 之间)和 alpha 值(介于 0.0 和 1.0 之间)
2init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat)它接受色调、饱和度、亮度和 alpha 的 CGFloat 值。CGFloat 值介于 0.0 和 1.0 之间。
3init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)它接受红色、绿色、蓝色和 alpha 的 CGFloat 值。CGFloat 值介于 0.0 和 1.0 之间。
4init(displayP3Red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)它接受 displayP3Red、绿色、蓝色和 alpha 的 CGFloat 值。CGFloat 值介于 0.0 和 1.0 之间。
5init(cgColor: CGColor)它接受一个 cgColor,它是 CGColor 类的实例。
6init(patternImage image: UIImage)它接受类型为 UIImage 的图案图像。
7init(ciColor: CIColor)它接受一个 ciColor,它是 CIColor 类的对象。

我们可以使用 UIColor 初始化器来构建自定义颜色对象,如下所示。

示例

让我们创建一个 iOS 应用来演示如何使用 UIColor 对象来配置应用的外观。

我们将在我们的应用中使用 UISlider。我们可以通过更改滑块的值来控制红色、绿色和蓝色组件。该应用的用户界面构建器如下所示。

Using UIColor to customize app appearance

让我们为红色、绿色和蓝色滑块创建出口。我们还将为滑块创建操作出口,当滑块的值更改时,将触发该出口。

在 ViewController.swift 中添加以下代码。

现在,在模拟器上运行该应用,并查看结果,如下所示。当我们移动滑块时,视图的背景颜色将发生变化。

Using UIColor to customize app appearance
下一主题#