#3 Creating Shapes in SwiftUI

示例程序

swift 复制代码
struct ShapesBootcamp: View {
    var body: some View {
        RoundedRectangle(cornerRadius: 4)
            .stroke(
                Color.purple,
                style: StrokeStyle(lineWidth: 4, dash: [10, 5])
            )
            .frame(width: 200, height: 100)
    }
}

形状类型

类型 初始化 几何描述
Circle() 无参 外接最小圆
Ellipse() 无参 外接椭圆
Capsule(style:) .circular / .continuous 两端半圆
Rectangle() 无参 无圆角
RoundedRectangle(cornerRadius:style:) 半径 + 风格 四角等半径

所有形状默认撑满父视图提案尺寸;使用 .frame() 可强制固定宽高。

视觉修饰符

修饰符 功能 示例 备注
.fill(_:) 内部填充 .fill(Color.blue) 支持纯色、渐变
.stroke(_:lineWidth:) 等宽描边 .stroke(.red, lineWidth: 2) 默认线帽 butt
.stroke(_:style:) 高级描边 .stroke(.orange, style: StrokeStyle(...)) 虚线、线帽、线连接
.trim(from:to:) 路径裁剪 .trim(from: 0.2, to: 0.8) 0--1 比例
.frame(width:height:alignment:) 固定尺寸 .frame(200, 100) 形状无固有尺寸
.scale(_:anchor:) 缩放 .scale(1.2) 锚点默认 center
.rotation(_:anchor:) 旋转 .rotation(.degrees(45)) 同上
.offset(x:y:) 平移 .offset(x: 10) 仅视觉偏移
.opacity(_:) 透明度 .opacity(0.5) 0--1
.blendMode(_:) 混合模式 .blendMode(.multiply) 需同级 ZStack
.mask(_:) 遮罩 .mask(Circle()) 支持任意 View
.shadow(color:radius:x:y:) 阴影 .shadow(.black, 4, x: 2, y: 2) 先阴影后形状
.accessibilityHidden(true) 隐藏朗读 见上 纯装饰时推荐

任务速查表

需求 片段
圆角按钮背景 RoundedRectangle(cornerRadius: 12).fill(.accent)
环形进度 Circle().trim(from: 0, to: progress).stroke(.blue, lineWidth: 4)
虚线边框 Rectangle().stroke(style: StrokeStyle(lineWidth: 1, dash: [5]))
胶囊标签 Capsule().fill(Color.gray.opacity(0.2))

性能与可访问性

  1. 矢量路径自动适配 @2x/@3x,无位图失真。
  2. 支持动态颜色与「降低透明度」辅助选项。
  3. 动画复杂时启用 .drawingGroup() 以 Metal 合成,降低 CPU 负担。
  4. 纯装饰形状请附加 .accessibilityHidden(true),避免 VoiceOver 读出「图像」。
相关推荐
开心就好202514 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
开心就好202517 小时前
免 Xcode 的 iOS 开发新选择?聊聊一款更轻量的 iOS 开发 IDE kxapp 快蝎
后端·ios
恋猫de小郭20 小时前
Apple 的 ANE 被挖掘,AI 硬件公开,宣传的 38 TOPS 居然是"数字游戏"?
前端·人工智能·ios
东坡肘子1 天前
OpenClaw 不错,但我好像没有那么需要 -- 肘子的 Swift 周报 #125
人工智能·swiftui·swift
忆江南2 天前
iOS 深度解析
flutter·ios
没有故事的Zhang同学2 天前
05-主题|事件响应者链@iOS-应用场景与进阶实践
ios
FeliksLv2 天前
尝试给Lookin 支持 MCP
ios
没有故事的Zhang同学2 天前
01-研究系统框架@Web@iOS | JavaScriptCore 框架:从使用到原理解析
ios
CocoaKier4 天前
苹果谷歌商店:如何监控并维护用户评分评论
ios·google·apple
iOS日常4 天前
iOS设备崩溃日志获取与查看
ios·xcode