颜值即正义,使用SwiftUI搭建简历管理详情页

简介: 颜值即正义,使用SwiftUI搭建简历管理详情页

颜值即正义,使用SwiftUI搭建简历管理详情页


效果预览

我们先来看看最终的效果图。示例:

image.png

结构梳理

我们大体了解下简历管理页面的结构,顶部导航说明文字、三个上传按钮

顶部导航没什么好说的了,说明文字有2个,采用的是纵向排布且左对齐,而三个上传按钮结构类似,我们可以抽离出样式减少代码量

最后说明文字和上传按钮和说明文字也是纵向排布,不同的是采用居中对齐

顶部导航

首先我们来完成顶部导航,示例:

// MARK: 简历管理详情页
struct UploadResume: View {
    var body: some View {
        ZStack {
            Color(red: 246 / 255, green: 246 / 255, blue: 246 / 255).edgesIgnoringSafeArea(.all)
        }.navigationBarTitle("简历管理", displayMode: .inline)
    }
}

image.png

上述代码中,我们很简单的创建了一个新的视图UploadResume。然后给视图ZStack覆盖上一层背景颜色,最后设置了navigationBarTitle顶部导航的标题。

说明文字

说明文字部分,我们可以单独构建样式,然后在UploadResume视图中使用。示例:

// 说明文字
func helpContent() -> some View {
    VStack(alignment: .leading, spacing: 20) {
        Text("请选择上传方式")
            .font(.title)
            .fontWeight(.bold)
        Text("建议使用PDF文件,也支持Doc、Docx、JPG、PNG格式,大小不超过5M。")
    }.padding()
}

上述代码中,我们使用VStack布局,然后设置了2个Text作为说明文字的内容,它们的对齐方式我们使用leading左对齐。

我们在UploadResume视图中使用也保持左对齐,示例:

ZStack {
    Color(red: 246 / 255, green: 246 / 255, blue: 246 / 255).edgesIgnoringSafeArea(.all)
    VStack(alignment: .leading, spacing: 40) {
        helpContent()
    }
}

image.png

上传按钮

我们看到上传按钮有3个,且结构类似,因此我们可以抽离出样式部分。示例:

// 上传操作
func uploadContent(image: String, text: String, isRecommend: String) -> some View {
    HStack(spacing: 20) {
        Image(image)
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(width: 40)
            .clipShape(Circle())
        Text(text)
            .font(.system(size: 17))
            .foregroundColor(.black)
        Spacer()
        Text(isRecommend)
            .font(.system(size: 17))
            .foregroundColor(.green)
    }
    .padding(.horizontal)
    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 80)
    .background(.white)
    .cornerRadius(8)
    .padding(.horizontal)
}

上述代码中,我们没有和之前一样使用结构体,而是使用方法创建新的视图uploadContent

上传按钮有Image图标、上传方式Text、是否推荐Text,我们将这三个参数抽离传入,然后返回创建一个View视图。

uploadContent视图中,我们使用HStack横向排布3个元素,最后设置按钮的尺寸和背景颜色,就完成了按钮样式的内容。

然后我们在UploadResume视图中创建样式,示例:

ZStack {
    Color(red: 246 / 255, green: 246 / 255, blue: 246 / 255).edgesIgnoringSafeArea(.all)
    VStack(alignment: .leading, spacing: 40) {
        helpContent()
        VStack(alignment: .center, spacing: 20) {
            Button(action: {
            }) {
                uploadContent(image: "weChat", text: "微信上传", isRecommend: "推荐")
            }
            Button(action: {
            }) {
                uploadContent(image: "phone", text: "本地上传", isRecommend: "")
            }
            Button(action: {
            }) {
                uploadContent(image: "mail", text: "邮件上传", isRecommend: "")
            }
        }
        Spacer()
    }
    .padding(.top, 40)
    .padding(.bottom, 40)
}.navigationBarTitle("简历管理", displayMode: .inline)

image.png

项目展示

恭喜你,完成了本章的全部内容!

快来动手试试吧。

相关文章
|
前端开发 安全 JavaScript
【实训项目】“我来拿”APP设计
【实训项目】“我来拿”APP设计
136 0
|
6月前
|
消息中间件 缓存 中间件
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
|
5月前
|
运维
会员系统功能售卖之一之学习资源,余老师的优点PTF做的好,公众号做的好,自媒体运维的好,教学视频类网站,学习自媒体运维可以多看看别人视频,讲课不会讲可以用音频转文字看看人家是怎样讲的,可以在网站上视频
会员系统功能售卖之一之学习资源,余老师的优点PTF做的好,公众号做的好,自媒体运维的好,教学视频类网站,学习自媒体运维可以多看看别人视频,讲课不会讲可以用音频转文字看看人家是怎样讲的,可以在网站上视频
|
7月前
|
前端开发 大数据 数据库
临时抱佛脚必看|一个月速通高级系统架构设计师!(低分飘过版)
本文写给已决定报考高级软件架构设计师的同学,从软考报名到正式考试,有40天时间,本文纯应试备考经验,一个月速成,仅供参考。
颜值即正义,使用SwiftUI搭建版本更新弹窗
颜值即正义,使用SwiftUI搭建版本更新弹窗
148 0
|
开发框架 JSON 小程序
开源分享|如何解锁小程序开发?这份攻略请收好!
本期我们整理了一些用于小程序开发的开源项目,快来围观~
253 0
|
SQL 开发框架 小程序
小程序开发-第二章第二节小程序电影卡片模板-全栈工程师之路-中级篇
小程序开发-第二章第二节小程序电影卡片模板-全栈工程师之路-中级篇
111 0
小程序开发-第二章第二节小程序电影卡片模板-全栈工程师之路-中级篇
|
JavaScript 测试技术
接口测试平台代码实现146: 平台主题-夏日清凉5
接口测试平台代码实现146: 平台主题-夏日清凉5
接口测试平台代码实现146: 平台主题-夏日清凉5
|
测试技术
接口测试平台代码实现143: 平台主题-夏日清凉2
接口测试平台代码实现143: 平台主题-夏日清凉2
接口测试平台代码实现143: 平台主题-夏日清凉2
|
前端开发 测试技术
接口测试平台代码实现144: 平台主题-夏日清凉3
我们本节开始继续去搞 接口库的主题外观,开搞之前,我们先学习下边框彩色的css: border-image:linear-gradient(to right,#ff8cd0,#77a4cb,#ff8cd
接口测试平台代码实现144: 平台主题-夏日清凉3