Color in SwiftUI

2,652 阅读2分钟

这一节我们来说说颜色,在这个世界上颜色让我们的生活变的多彩多姿,世界因为有了多种颜色,才变得美不胜收。那么我们该如何在 SwifUI 中去使用颜色呢,接下来我们就一起看看吧。

我们还是用 RounderdRectangle 来做例子,当我们声明一个圆角矩形时,系统会主动使用系统的颜色黑色来填充颜色,不过这个是在Light模式下的颜色,在Dark模式下,它的颜色是白色

struct ColorSample: View {
    var body: some View {
        RoundedRectangle(cornerRadius: 25.0)
            .fill()
            .frame(width: 300, height: 200)
    }
}

让我们来看看具体效果

左图为Dark模式,右图为Light模式

Screenshot 2023-06-30 at 18.20.45.png

那么该如何去切换模式呢,接着往下看

Screenshot 2023-06-30 at 18.21.17.png

我们可以点击 预览区域的下面部分切换按钮,当你点击时就会出现一个框。这时我们就可以来切换模式了。注意红色框和箭头的指向

如何使用自定义颜色

通常我们的设计师会给出对应的颜色色值,我们可以在Xcode方便设置颜色,然后在代码中使用对应的名称即可显示颜色

去创建一个颜色

我们找到 Assets.xcassets 点击左下角的 + 号,然后选择 Color set

image.png

取一个名称,例如:CustomeColor,最初创建好,默认的Dark和Light颜色都是白色,你可以点击右边拦,进行Color的更改

image.png

image.png 在代码中去使用

image.png 把名称输入 name 的占位符部分,即可查看效果

struct ColorSample: View {
    var body: some View {
        RoundedRectangle(cornerRadius: 25.0)
            .fill(
                Color("CustomColor")
            )
            .frame(width: 300, height: 200)
    }
}

Screenshot 2023-06-30 at 18.24.29.png

Dark & Light 效果

方法二

你可以定义一个变量,var color = #colorLiteral 当你输入var color = #colorLiteral 时,不会有任何变化,此时不要慌,你只需要按下左括号,也就是 ( ,然后你定义的变量就会变成这样 image.png 此时你只需要双击占位图片,就可以弹出一个颜色选择框,这时你可以选择你想要的任何颜色,点击 Other 按钮会有更多颜色提供 image.png 有时你想使用 Hex Color,那么你可以点击 Other 按钮,切换到第二栏,就可以在下方输入Hex值了

image.png

颜色定义好了之后,你只需要把变量的名称写在 Color 括号里面就可以了。

    struct ColorSample: View {
        var color = #colorLiteral(red: 0, green: 0.8470588235, blue: 0.6431372549, alpha: 1)
        
        var body: some View {
            RoundedRectangle(cornerRadius: 25.0)
                .fill(
                    Color(color)
                )
                .frame(width: 300, height: 200)
        }
    }

你也可以使用 UIColor 来填充颜色,这里和UIColor一样,就不再多说了

    struct ColorSample: View {
        var color = #colorLiteral(red: 0, green: 0.8470588235, blue: 0.6431372549, alpha: 1)
        
        var body: some View {
            RoundedRectangle(cornerRadius: 25.0)
                .fill(
                    Color(UIColor.red)
                )
                .frame(width: 300, height: 200)
        }
    }

image.png

这一节主要说了Color的使用,多点点就可以掌握