.transformEffect用法

.transformEffect 是 SwiftUI 中的一个修饰符,用于对视图应用 2D 仿射变换(Affine Transform) ,比如平移、旋转、缩放或倾斜等效果。它基于 CGAffineTransform,适用于调整视图的位置、大小或形状,但不同于 3D 变换(如 rotation3DEffect)。


基本用法

swift 复制代码
视图
    .transformEffect(CGAffineTransform(translationX: 50, y: 50)) // 平移

常见变换示例

  1. 平移(Translation)

    将视图沿 X/Y 轴移动:

    swift 复制代码
    .transformEffect(CGAffineTransform(translationX: 20, y: 10))
  2. 旋转(Rotation)

    旋转视图(弧度制):

    swift 复制代码
    .transformEffect(CGAffineTransform(rotationAngle: .pi / 4)) // 45度
  3. 缩放(Scale)

    调整视图大小:

    swift 复制代码
    .transformEffect(CGAffineTransform(scaleX: 1.5, y: 0.8))
  4. 组合变换

    通过链式调用或直接组合:

    swift 复制代码
    let transform = CGAffineTransform(translationX: 50, y: 0)
        .rotated(by: .pi / 4)
        .scaledBy(x: 2, y: 1)

注意事项

  • 2D 变换 :与 .rotation3DEffect 不同,transformEffect 仅支持 2D 变换。
  • 性能 :适合轻量级动画,复杂变换建议结合 Canvas 或 Metal。
  • 坐标系 :变换基于视图的 局部坐标系(以自身中心为原点)。

完整示例

swift 复制代码
Text("Hello, SwiftUI")
    .padding()
    .background(Color.blue)
    .foregroundColor(.white)
    .transformEffect(CGAffineTransform(rotationAngle: .pi / 6)) // 旋转30度

如果需要 3D 变换 (如透视效果),应改用 .rotation3DEffect 或自定义 ProjectionTransform

相关推荐
Jave210835 分钟前
实现全局自定义loading指令
前端·vue.js
奔跑的呱呱牛39 分钟前
CSS Grid 布局参数详解(超细化版)+ 中文注释 Demo
前端·css·grid
木斯佳1 小时前
前端八股文面经大全:影刀AI前端一面(2026-04-01)·面经深度解析
前端·人工智能·沙箱·tool·ai面经
小江的记录本2 小时前
【Linux】《Linux常用命令汇总表》
linux·运维·服务器·前端·windows·后端·macos
无人机9012 小时前
Delphi 网络编程实战:TIdTCPClient 与 TIdTCPServer 类深度解析
java·开发语言·前端
lUie INGA3 小时前
rust web框架actix和axum比较
前端·人工智能·rust
OPHKVPS3 小时前
VoidStealer新型窃密攻击:首例利用硬件断点绕过Chrome ABE防护,精准窃取v20_master_key
前端·chrome
gechunlian884 小时前
SpringBoot3+Springdoc:v3api-docs可以访问,html无法访问的解决方法
前端·html
驾驭人生4 小时前
ASP.NET Core 实现 SSE 服务器推送|生产级实战教程(含跨域 / Nginx / 前端完整代码)
服务器·前端·nginx
酉鬼女又兒5 小时前
零基础快速入门前端ES6 核心特性详解:Set 数据结构与对象增强写法(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·es6