.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。

相关推荐
行者-全栈开发11 分钟前
【前端/JS框架】CVE-2026-3854:GitHub Enterprise Server X-Stat注入XSS漏洞深度剖析与紧急修复指南
前端·javascript·github
计算机魔术师1 小时前
AMD砸82亿买下李飞飞,这次不卖芯片卖什么?
前端
hzxpaipai2 小时前
杭州企业官网怎么建设?从策划到上线的5步建站方法
运维·服务器·前端·网络
怕浪猫2 小时前
2026年金九银十,我面了22个前端
前端·javascript·面试
IT_陈寒2 小时前
Vue 这个响应式陷阱,我的头发都掉没了
前端·人工智能·后端
前端的日常2 小时前
一个人+AI做情侣食谱小程序,30天纯赚
前端·javascript·后端
庄园特聘拆椅狂魔3 小时前
Java 后端转全栈的第一课:从前端项目搭建到技术选
java·开发语言·前端
triumph_passion3 小时前
前端路由策略:Memory、Hash 与 History
前端
李剑一3 小时前
AntDesign老版本没有月份和年份区间选择组件?我封装了一个完美版,附源码!
前端·vue.js
牧艺3 小时前
浏览器端 3D 看车重磅升级:从三款展车到可试驾的八车展厅
前端·three.js·交互设计