当前位置: 首页 > news >正文

(4)SwiftUI 基础(第四篇)

📘 SwiftUI 基础(第四篇)

【求打赏】

在这里插入图片描述

🎨 颜色与形状:Color、RoundedRectangle、Circle、LinearGradient 渐变背景

在前面几篇里,我们已经能排版出漂亮的界面。
但如果没有配色和形状修饰,画面会显得单调。
这一篇让你掌握 SwiftUI 的视觉基础:颜色 + 圆角 + 渐变背景 + 形状叠加


一、Color —— 背景与主题色

🎯 1️⃣ 系统内置颜色

SwiftUI 自带了很多系统色,支持亮暗模式自动适配:

Color.blue
Color.red
Color.green
Color.orange
Color.gray
Color.primary    // 主要文本色(会随系统模式变)
Color.secondary  // 次要文本色

🎯 2️⃣ 自定义颜色

Color(red: 0.3, green: 0.6, blue: 0.9)   // RGB 范围:0~1
Color(.systemPink)                        // UIKit 系统色也能用

🎯 3️⃣ 设置为背景

Text("带背景色的文字").padding().background(Color.yellow)

💡 如果你想让颜色铺满整个屏幕,可以用:

Color.blue.ignoresSafeArea()

二、RoundedRectangle —— 圆角矩形

这是 SwiftUI 中最常用的形状之一。

RoundedRectangle(cornerRadius: 20).fill(Color.purple).frame(width: 200, height: 100)

.fill() 设置填充色
.stroke() 设置边框线条

例如:

RoundedRectangle(cornerRadius: 20).stroke(Color.blue, lineWidth: 4).frame(width: 200, height: 100)

三、Circle —— 圆形与头像容器

圆形可以用于头像、按钮或徽章。

Circle().fill(Color.orange).frame(width: 100, height: 100)

如果想用图片裁剪成圆形头像:

Image("swift-logo").resizable().scaledToFit().frame(width: 120, height: 120).clipShape(Circle()).overlay(Circle().stroke(Color.white, lineWidth: 4))

四、LinearGradient —— 线性渐变

渐变能让界面更现代、更有层次感。

🎨 基本用法:

LinearGradient(colors: [.blue, .purple],startPoint: .topLeading,endPoint: .bottomTrailing
)
.frame(width: 200, height: 100)
.cornerRadius(12)

你可以用 .top.bottom.leading.trailing.center 等控制方向。

🎨 应用于背景:

Text("渐变背景按钮").padding().frame(width: 220).background(LinearGradient(colors: [.orange, .pink], startPoint: .leading, endPoint: .trailing)).foregroundColor(.white).cornerRadius(12)

五、组合示例 🌈

🎯 目标:制作一张「SwiftUI 学习卡片」

import SwiftUIstruct ContentView: View {var body: some View {ZStack {// 背景渐变LinearGradient(colors: [.blue, .purple],startPoint: .topLeading,endPoint: .bottomTrailing).ignoresSafeArea()VStack(spacing: 24) {// 头像Image("swift-logo").resizable().scaledToFit().frame(width: 120, height: 120).clipShape(Circle()).overlay(Circle().stroke(Color.white, lineWidth: 4)).shadow(radius: 10)// 标题Text("SwiftUI 学习卡片").font(.title).fontWeight(.bold).foregroundColor(.white)// 内容区域RoundedRectangle(cornerRadius: 20).fill(Color.white.opacity(0.2)).frame(width: 300, height: 120).overlay(VStack(spacing: 8) {Text("掌握修饰符、布局、颜色与形状").foregroundColor(.white)Text("打造你第一个 iOS 应用界面 🚀").foregroundColor(.white.opacity(0.8)).font(.footnote)})// 渐变按钮Button(action: {}) {Text("立即开始学习").fontWeight(.semibold).padding().frame(width: 220).background(LinearGradient(colors: [.pink, .orange], startPoint: .leading, endPoint: .trailing)).foregroundColor(.white).cornerRadius(12).shadow(radius: 5)}}}}
}#Preview {ContentView()
}

在这里插入图片描述

✅ 效果说明:

  • 背景是蓝紫渐变
  • 中间有圆形头像 + 半透明信息卡
  • 底部是橙粉渐变按钮

六、小结 📚

功能控件/修饰符示例
背景颜色Color.background(Color.blue)
圆角矩形RoundedRectangle.fill(Color.red).cornerRadius(20)
圆形头像Circle() + .clipShape().clipShape(Circle())
渐变背景LinearGradient.background(LinearGradient(colors: [...]))
铺满屏幕.ignoresSafeArea()让背景色全屏覆盖

✏️ 课后挑战

  1. 修改渐变颜色方向;
  2. 把圆角矩形换成 Capsule()(药丸形);
  3. 给按钮增加阴影;
  4. 用不同透明度 .opacity() 设计出层次感。

http://www.dtcms.com/a/461353.html

相关文章:

  • 全球独家支持CV云渲染!渲染101平台助力Vantage动画创作新飞跃
  • Linux中计时相关函数的实现
  • InterGEO2025 | 和芯星通发布UM98XC系列 全系统多频高精度RTK星基定位模块
  • Node.js 工具模块详解
  • k8s介绍和特性
  • 上海网站建设推网络营销方式整理
  • 软软一键开关 --提供多个 Windows 系统开关,例如保持常亮、隐藏桌面图标、显示器亮度、夜间模式等
  • C 数组:深入解析与高效应用
  • 牛客网_动态规划
  • 《边缘端工业系统的编程优化与性能突破》
  • Typescript中的Type check类型检查
  • 【2063】牛吃牧草
  • 网站开发专业优势吉林长春建设工程信息网站
  • 16. SPDK应用框架
  • 【2026计算机毕业设计】基于Jsp的校园勤工俭学兼职系统
  • ⸢ 柒-Ⅱ⸥ ⤳ 可信纵深防御建设方案:应用可信网络可信
  • 做棋牌游戏网站犯法吗网站建设公司咋样
  • 自己做网站怎么加定位seo首页排名优化
  • 华为NetEngine 8000 M1A路由器配置
  • 【C/C++】一篇小文速通 数据类型
  • 棱镜观察|极氪销量遇阻?千里智驾左手服务吉利、右手对标华为
  • 如何安全轻松地出售损坏的 iPhone(最新指南)
  • QT-常用控件(二)
  • React 源码揭秘 | 合成事件
  • 如何处理旧 iPhone:安全地回收或重新利用
  • 过年做那些网站能致富网页制作培训苏州
  • 公司网站百度地图微信小程序商城源代码
  • 【征文计划】AI+AR生态新未来,Rokid核心技术实战解析
  • AI 驱动的 AR眼镜巡检技术方案:让工业缺陷识别更精准高效|阿法龙XR云平台​
  • JFM9VU3P开发板/国产FPGA/ QSFP+ 40G 光纤接口