颜值即正义,使用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

项目展示

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

快来动手试试吧。

相关文章
|
12月前
|
前端开发 安全 JavaScript
【实训项目】“我来拿”APP设计
【实训项目】“我来拿”APP设计
117 0
|
4月前
|
运维
会员系统功能售卖之一之学习资源,余老师的优点PTF做的好,公众号做的好,自媒体运维的好,教学视频类网站,学习自媒体运维可以多看看别人视频,讲课不会讲可以用音频转文字看看人家是怎样讲的,可以在网站上视频
会员系统功能售卖之一之学习资源,余老师的优点PTF做的好,公众号做的好,自媒体运维的好,教学视频类网站,学习自媒体运维可以多看看别人视频,讲课不会讲可以用音频转文字看看人家是怎样讲的,可以在网站上视频
|
6月前
|
小程序 安全 JavaScript
校园兼职|大学生校园兼职小程序|基于微信小程序的大学生校园兼职系统设计与实现(源码+数据库+文档)
校园兼职|大学生校园兼职小程序|基于微信小程序的大学生校园兼职系统设计与实现(源码+数据库+文档)
88 0
|
6月前
|
前端开发 大数据 数据库
临时抱佛脚必看|一个月速通高级系统架构设计师!(低分飘过版)
本文写给已决定报考高级软件架构设计师的同学,从软考报名到正式考试,有40天时间,本文纯应试备考经验,一个月速成,仅供参考。
|
6月前
|
存储 SQL 关系型数据库
校园二手商品交易系统的设计与实现(论文+源码)_kaic
校园二手商品交易系统的设计与实现(论文+源码)_kaic
|
6月前
|
小程序
大学生校园兼职微信小程序设计与实现(源码+lw+部署文档+讲解等)
大学生校园兼职微信小程序设计与实现(源码+lw+部署文档+讲解等)
202 0
大学生校园兼职微信小程序设计与实现(源码+lw+部署文档+讲解等)
|
6月前
|
定位技术 数据安全/隐私保护
保研夏令营、考研复试院校信息汇总表的模板与制作注意事项
保研夏令营、考研复试院校信息汇总表的模板与制作注意事项
|
6月前
|
小程序 JavaScript Java
基于微信小程序的健身私教预约系统设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)
基于微信小程序的健身私教预约系统设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)
104 0
|
12月前
|
小程序 搜索推荐 前端开发
【开题报告】基于微信小程序的旅游攻略分享平台的设计与实现
【开题报告】基于微信小程序的旅游攻略分享平台的设计与实现
274 0
颜值即正义,使用SwiftUI搭建版本更新弹窗
颜值即正义,使用SwiftUI搭建版本更新弹窗
122 0