让人惊艳的高级配色,让你的色彩灵感爆棚!

简介: 让人惊艳的高级配色,让你的色彩灵感爆棚!

让人惊艳的高级配色,让你的色彩灵感爆棚!

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情。

在本章中,你将学会使用SwiftUI搭建一个纯色背景App。

项目背景

无意中在刷B站的时候,看到一些很温馨的颜色搭配,让人充满灵感。

以前就很喜欢使用纯色背景,经常会用纯色背景图片作为壁纸。

那么本章中,我们就尝试使用SwiftUI搭建一个纯色背景App。

项目搭建

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

image.png

模型搭建

首先,我们先创建一个数据模型,我们命名为Model。

struct Model:Identifiable {
    var id:UUID
    var color:Color
    var colorName:String
    var colorRGBName:String
}

image.png上述代码中,我们创建了一个Model结构体,遵循Identifiable协议。

Identifiable协议可以帮助我们定位到数据源的id,当我们的示例数据存在2条或者多条一模一样的数据时,会展示多条而不是合并为一条。

然后我们声明了几个变量:id作为唯一标识符,color为背景颜色,colorName为颜色名称,colorRGBName为对应颜色的RGB颜色值名称。

完成后,我们来创建一些示例数据,示例:

var models = [
    Model(colorName: "草莓红", color: Color(red: 228/255, green: 45/255, blue: 68/255), colorRGBName: "#E42D44"),
    Model(colorName: "奶油白", color: Color(red: 250/255, green: 239/255, blue: 222/255), colorRGBName: "#FAEFDE"),
    Model(colorName: "泥猴桃绿", color: Color(red: 123/255, green: 173/255, blue: 95/255), colorRGBName: "#7BAD5F"),
    Model(colorName: "小麦黄", color: Color(red: 229/255, green: 215/255, blue: 173/255), colorRGBName: "#E5D7AD"),
    Model(colorName: "板栗灰", color: Color(red: 97/255, green: 79/255, blue: 77/255), colorRGBName: "#614F4D"),
    Model(colorName: "柠檬黄", color: Color(red: 255/255, green: 216/255, blue: 0/255), colorRGBName: "#FFD800"),
    Model(colorName: "葡萄紫", color: Color(red: 91/255, green: 52/255, blue: 99/255), colorRGBName: "#5B3663"),
    Model(colorName: "青豆绿", color: Color(red: 188/255, green: 207/255, blue: 144/255), colorRGBName: "#BCCF90"),
    Model(colorName: "水蜜桃粉", color: Color(red: 246/255, green: 160/255, blue: 154/255), colorRGBName: "#F6A09A")
]

image.png就此,数据部分我们就准备好了。

页面样式

我们再来分析下交互逻辑,首先我们要实现左右拖动切换页面,这个我们可以使用到TabView组件作为我们的核心视图,示例:

TabView {  
    //代码块
}
.tabViewStyle(PageTabViewStyle())
.edgesIgnoringSafeArea(.all)

由于要实现滚动,那么在TabView视图的基础上,还需要使用tabViewStyle修饰符进行修饰,我们使用PageTabViewStyle样式。

另外为了实现整个屏幕都是纯色背景效果,我们使用edgesIgnoringSafeArea修饰符,将iPhone安全区域去掉。

内容结构部分,我们可以使用ForEach循环遍历我们的示例数据数组models的数据,示例:

TabView {  
    ForEach(models) { item in    
    //代码块
    }    
}
.tabViewStyle(PageTabViewStyle())
.edgesIgnoringSafeArea(.all)

内容显示部分,我们的背景颜色和颜色名称、颜色RGB值的排布方式是文字浮在背景上,因此这里我们可以使用ZStack视图,示例:

TabView {  
    ForEach(models) { item in    
         ZStack {
            item.color.edgesIgnoringSafeArea(.all)
            //文字部分
        }
    }    
}
.tabViewStyle(PageTabViewStyle())
.edgesIgnoringSafeArea(.all)

上述代码中,我们填充了一个背景颜色,我们看看效果。

image.png

最后是文字部分,我们使用VStack纵向布局的方式排布颜色名称和RGB颜色值。示例:

TabView {
    ForEach(models) { item in
        ZStack {
            item.color.edgesIgnoringSafeArea(.all)
            VStack(alignment: .center, spacing: 20) {
                Text(item.colorName)
                    .font(.system(size: 24))
                    .fontWeight(.bold)
                    .foregroundColor(.white)
                Text(item.colorRGBName)
                    .font(.system(size: 17))
                    .fontWeight(.bold)
                    .foregroundColor(.white)
            }
        }
    }
}
.tabViewStyle(PageTabViewStyle())
.edgesIgnoringSafeArea(.all)
作者:文如秋雨
链接:https://juejin.cn/post/7126459967090982920
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

项目展示

image.png

本章代码


复制代码
import SwiftUI
struct ContentView: View {
    var body: some View {
        TabView {
            ForEach(models) { item in
                ZStack {
                    item.color.edgesIgnoringSafeArea(.all)
                    VStack(alignment: .center, spacing: 20) {
                        Text(item.colorName)
                            .font(.system(size: 28))
                            .fontWeight(.bold)
                            .foregroundColor(.white)
                        Text(item.colorRGBName)
                            .font(.system(size: 17))
                            .fontWeight(.bold)
                            .foregroundColor(.white)
                    }
                }
            }
        }
        .tabViewStyle(PageTabViewStyle())
        .edgesIgnoringSafeArea(.all)
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
struct Model: Identifiable {
    var id = UUID()
    var colorName: String
    var color: Color
    var colorRGBName: String
}
var models = [
    Model(colorName: "草莓红", color: Color(red: 228 / 255, green: 45 / 255, blue: 68 / 255), colorRGBName: "#E42D44"),
    Model(colorName: "奶油白", color: Color(red: 250 / 255, green: 239 / 255, blue: 222 / 255), colorRGBName: "#FAEFDE"),
    Model(colorName: "泥猴桃绿", color: Color(red: 123 / 255, green: 173 / 255, blue: 95 / 255), colorRGBName: "#7BAD5F"),
    Model(colorName: "小麦黄", color: Color(red: 229 / 255, green: 215 / 255, blue: 173 / 255), colorRGBName: "#E5D7AD"),
    Model(colorName: "板栗灰", color: Color(red: 97 / 255, green: 79 / 255, blue: 77 / 255), colorRGBName: "#614F4D"),
    Model(colorName: "柠檬黄", color: Color(red: 255 / 255, green: 216 / 255, blue: 0 / 255), colorRGBName: "#FFD800"),
    Model(colorName: "葡萄紫", color: Color(red: 91 / 255, green: 52 / 255, blue: 99 / 255), colorRGBName: "#5B3663"),
    Model(colorName: "青豆绿", color: Color(red: 188 / 255, green: 207 / 255, blue: 144 / 255), colorRGBName: "#BCCF90"),
    Model(colorName: "水蜜桃粉", color: Color(red: 246 / 255, green: 160 / 255, blue: 154 / 255), colorRGBName: "#F6A09A"),
]


相关文章
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
VidSketch:手残党逆袭!浙大AI神器草图秒变4K动画,三连提示词玩转影视级特效
VidSketch 是浙江大学推出的创新视频生成框架,通过手绘草图和简单文本提示生成高质量视频动画,降低视频创作的技术门槛,满足多样化的艺术需求。
75 6
VidSketch:手残党逆袭!浙大AI神器草图秒变4K动画,三连提示词玩转影视级特效
|
6天前
|
Web App开发 前端开发 数据可视化
20K star!让网页设计秒变手绘风,这个开源库太有创意了!
嗨,大家好,我是小华同学。Rough.js 是一个仅8KB的轻量级图形库,能为网页元素赋予自然的手绘质感,支持手绘风格渲染、全类型图形和跨平台兼容。它适合数据可视化、教育课件、原型设计等场景,具有设计友好、性能卓越、扩展性强等优势。
44 12
|
7月前
|
前端开发
CSS动画新境界:打造逼真的水罐摇晃动效!
CSS动画新境界:打造逼真的水罐摇晃动效!
|
安全 iOS开发
让人惊艳的高级配色,让你的色彩灵感爆棚!
在本章中,你将学会使用SwiftUI搭建一个纯色背景App。
482 2
让人惊艳的高级配色,让你的色彩灵感爆棚!
|
计算机视觉
UWP 手绘视频创作工具技术分享系列 - 手绘视频与视频的结合
原文:UWP 手绘视频创作工具技术分享系列 - 手绘视频与视频的结合 本篇作为技术分享系列的第三篇,详细讲一下手绘视频中结合视频的处理方式。 随着近几年短视频和直播行业的兴起,视频成为了人们表达情绪和交流的一种重要方式,人们对于视频的创作、编辑和分享有了更多的需求。
1573 3
|
编解码 数据可视化 Java
【干货】如何为论文设计精致的插图
论文是经过数月或数年实验得到的数据的积淀。 但是,原始数据或描述本身并不能成为好的期刊文章。 数据可视化工具和免费绘图软件能帮助科学家阐述他们的工作。 更好看的插图也可以吸引评审者的眼球。 更重要的是,它能帮助读者快速了解数据,增加引用和分享研究论文的可能性。
1808 0
图像滤镜艺术---乐高像素拼图特效
原文:图像滤镜艺术---乐高像素拼图特效 本文介绍乐高像素拼图特效滤镜的实现,这里仅仅介绍PS实现过程,关于程序的实现,大家可以使用ZPhotoEngine来实现,这个引擎可以在www.zealpixel.com上下载,是免费的。
1445 0
|
前端开发 HTML5 移动开发
分享20个新颖的字体设计草图,带给你灵感
  通常我们对最终设计至关重要,但在幕后有很多流程,例如草图。 草图是是把想法作为一种思想框架描绘出来。 有时客户需要一个独特的品牌新标识或字体更方便画在纸上,之后扫描到 Photoshop 和 Illustrator。
1173 0
|
UED HTML5 移动开发
另类网页设计:30个复古怀旧风格的网站作品
  复古怀旧风格的网页设计是一种独特的网页设计模式。在过去的几年里,我们看到很多复古设计的例子,其中的一些看起来真的很不错,并提供出色的用户体验。当然,复古设计不是适合任何类型的网站,设计必须是故事的一部分并有适应的业务领域,但是如果应用得当,效果是惊人的!这里是30个美丽的复古设计的网站,一起欣赏。
1670 0
|
前端开发
太有才了!创新的街头涂鸦手绘欣赏【中篇】
  传统的涂鸦艺术家一般使用油漆来实现自己的作品,“街头艺术”包含了许多其他的媒体和技术,包括:LED艺术,马赛克瓷砖,壁画,模板艺术,贴纸艺术,街头雕塑,街道装置,视频投影等等。   投影到大型城市建筑形式的涂鸦是一种新的媒体形式,越来越流行。
820 0

热门文章

最新文章