0
点赞
收藏
分享

微信扫一扫

RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)

在本章中,你将学会使用​​SwiftUI​​​搭建一个​​RGB​​​转​​16进制​​​颜色值​​App​​。

项目背景

在日常B端开发过程中,我们看到很多大厂设计规范关于颜色部分标注的都是​​RGB颜色值​​​,而有时我们开发又会使用到​​16进制颜色值​​作为颜色参数。

这时我们就需要把​​RGB​​颜色转换为​​16进制​​颜色值。

那么本章中,我们就来完成一个​​RGB​​​转​​16进制​​颜色值App。

项目搭建

首先,创建一个新的​​SwiftUI​​​项目,命名为​​RGBToHex​​。

RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)_输入框

页面样式

我们来完成页面样式部分,设计稿如下:

RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)_颜色值_02

色卡展示

我们从上至下构建样式部分,首先是最终展示的色卡,由于中间想要展示最终转换后的​​16进制​​颜色值,因此需要声明一个变量来存储它。示例:

@State var colorName: String = "请输入RGB值"

然后,我们构建色卡样式部分,示例:

// 色卡展示
func colorCard() -> some View {
Text(colorName)
.font(.system(size: 23))
.fontWeight(.bold)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 10, maxHeight: 240)
.padding()
.foregroundColor(.white)
.background(toRGB(.black)
.cornerRadius(8)
}

RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)_16进制_03

上述代码中,我们构建了一个色卡展示的视图​​colorCard​​。

在这个视图里,我们使用​​Text​​​构建色卡,给文字设置了​​23​​​的字号,文字​​加粗​​​,调整了色卡的尺寸为​​自定义宽度​​​且固定最大高度为​​240​​。

设置了​​padding​​​边距,​​Text​​​文字颜色​​foregroundColor​​​为白色,而​​background​​​背景颜色现在我们先设置为黑色,后面我们再根据用户输入的​​RGB值​​自动更新颜色。

最后为了好看,设置了​​cornerRadius​​圆角为8。

RGB输入值

下一步,我们需要构建RGB输入值视图,供用户填写对应颜色的​​RGB​​值。

首先我们依旧需要提前声明好参数,示例:

@State var redColor: String = ""
@State var greenColor: String = ""
@State var blueColor: String = ""

上述代码中,我们声明了3个变量:​​redColor​​​红色、​​greenColor​​​绿色、​​blueColor​​蓝色。

然后我们可以使用​​TextField​​构建输入框视图,示例:

// RGB 输入值
func rgbInput() -> some View {
HStack {
TextField("red", text: $redColor)
.textFieldStyle(RoundedBorderTextFieldStyle())
.disableAutocorrection(true)
.keyboardType(.numberPad)
.onChange(of: redColor) { _ in

}

TextField("green", text: $greenColor)
.textFieldStyle(RoundedBorderTextFieldStyle())
.disableAutocorrection(true)
.keyboardType(.numberPad)
.onChange(of: greenColor) { _ in

}

TextField("blue", text: $blueColor)
.textFieldStyle(RoundedBorderTextFieldStyle())
.disableAutocorrection(true)
.keyboardType(.numberPad)
.onChange(of: blueColor) { _ in

}
}
}

RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)_Swift_04

上述代码中,我们构建了一个​​RGB​​​颜色值输入框的视图​​rgbInput​​。

我们使用​​HStack​​​横向排布了3个​​TextField​​输入框作为数值输入,然后分别绑定我们声明好的参数。

对于输入框部分,我们禁用了自动更正,并且设置了​​keyboardType​​​键盘类型为​​numberPad​​。

最后使用​​onChange​​修饰符绑定声明好的参数,这样的效果是,当我们输入值改变的时候,我们就可以在里面调用相应的方法直接修改颜色。

整体布局

我们回到​​ContentView​​视图中,将创建好的视图进行排布,示例:

var body: some View {
VStack(spacing: 40) {
colorCard()
rgbInput()
Spacer()
}
.padding()
}

我们让​​colorCard​​​色卡视图和​​rgbInputRGB​​​颜色值输入视图纵向排布,并且使用​​Spacer​​将视图顶上去。

就此,我们在​​App​​页面样式部分就已经全部完成了。

RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)_颜色值_05

未完待续

恭喜你,完成了整个项目的页面样式部分!

下一章中,我们将继续完成这个项目的逻辑部分。

快来动手试试吧。

如果本专栏对你有帮助,不妨点赞、评论、关注~

举报

相关推荐

0 条评论