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

项目展示

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

快来动手试试吧。

相关文章
|
2月前
|
监控 搜索推荐 数据挖掘
电子邮件营销新风潮:五步高效撰写EDM文案
构建成功的EDM邮件营销策略涉及理解目标受众、设定营销目标、创建吸引人的主题、个性化内容和情感共鸣、强调价值点、以及持续测试和优化。了解受众特征和行为以定制文案,使用生动语言制造兴趣,通过个性化和情感化元素增强连接,突出产品优势并设置明确的行动号召。运用A/B测试评估文案效果,并监控数据以优化营销表现。Zoho Campaigns等工具可提供支持,包括模板、编辑器和A/B测试功能,助力打造高效邮件营销文案。
51 1
|
移动开发 JSON 小程序
情人节福利,恋爱话术微信小程序它来了(开源,看了就懂~,2万字真香警告)
情人节福利,恋爱话术微信小程序它来了(开源,看了就懂~,2万字真香警告)
550 0
情人节福利,恋爱话术微信小程序它来了(开源,看了就懂~,2万字真香警告)
|
2月前
|
前端开发 大数据 数据库
临时抱佛脚必看|一个月速通高级系统架构设计师!(低分飘过版)
本文写给已决定报考高级软件架构设计师的同学,从软考报名到正式考试,有40天时间,本文纯应试备考经验,一个月速成,仅供参考。
107 0
|
2月前
|
定位技术 数据安全/隐私保护
保研夏令营、考研复试院校信息汇总表的模板与制作注意事项
保研夏令营、考研复试院校信息汇总表的模板与制作注意事项
|
2月前
|
小程序 JavaScript Java
基于微信小程序的健身私教预约系统设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)
基于微信小程序的健身私教预约系统设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)
73 0
|
10月前
|
移动开发 前端开发 HTML5
HTML+CSS-项目:学成在线
HTML+CSS-项目:学成在线
125 1
|
Java 应用服务中间件 数据库
电商促销后台设计,写得太好了!
电商促销后台设计,写得太好了!
266 0
电商促销后台设计,写得太好了!
|
程序员
阿云漫画 | "工作了,又仿佛没在工作"是一种什么体验
编者按: 程序员的日常大多和电脑有关,那么在等待计算机操作结束的这段时间,要如何高效利用呢?要说程序员等待编译的时候都在做神马,就不得不祭出这篇经典的漫画。
|
开发框架 JSON 小程序
开源分享|如何解锁小程序开发?这份攻略请收好!
本期我们整理了一些用于小程序开发的开源项目,快来围观~
225 0
|
监控 小程序 安全
热饭的测开成果盘点第十八期:微信小程序平台
本期介绍的是一款测试微信小程序的自动化平台,功能比较简单,算是我给我带着我小徒弟(txn) 练手的第一个学习用平台。
热饭的测开成果盘点第十八期:微信小程序平台