SwiftUI 中的 scaleEffect 修饰器

SwiftUI 中的 scaleEffect 修饰器

scaleEffect 是 SwiftUI 中用于调整视图缩放比例的修饰器,它可以让视图在二维平面上进行放大或缩小变换。

基本用法

1. 统一缩放

swift 复制代码
// 整体放大1.5倍
Image("example")
    .scaleEffect(1.5)

// 整体缩小到0.8倍
Text("Hello")
    .scaleEffect(0.8)

2. 分别指定x/y轴缩放

swift 复制代码
// 水平放大1.2倍,垂直缩小到0.9倍
Circle()
    .scaleEffect(x: 1.2, y: 0.9)

3. 带锚点的缩放

swift 复制代码
// 以视图顶部中心点为锚点放大
Rectangle()
    .scaleEffect(1.5, anchor: .top)

高级用法

结合动画

swift 复制代码
@State private var scaled = false

Button("点击缩放") {
    withAnimation(.spring()) {
        scaled.toggle()
    }
}
.scaleEffect(scaled ? 1.5 : 1.0)

组合其他变换

swift 复制代码
// 缩放+旋转组合
RoundedRectangle(cornerRadius: 10)
    .scaleEffect(0.8)
    .rotationEffect(.degrees(45))

响应手势

swift 复制代码
@State private var currentScale: CGFloat = 1.0

Image("photo")
    .scaleEffect(currentScale)
    .gesture(MagnificationGesture()
        .onChanged { value in
            currentScale = value
        }
    )

注意事项

  1. scaleEffect 不会改变视图的原始布局空间,缩放后的视图仍会占据原始位置和大小的空间
  2. 对于需要改变布局空间的情况,可以考虑使用 frametransformEffect
  3. 过度缩放可能导致内容模糊,特别是对于位图图像

scaleEffect 是创建动态界面和交互效果的强大工具,常用于按钮反馈、焦点突出和过渡动画等场景。

相关推荐
徐小夕20 分钟前
花了3天,我写了一款开源AI公众号编辑器
前端·vue.js·github
PBitW29 分钟前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
Hilaku36 分钟前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
PBitW1 小时前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
名字还没想好☜1 小时前
React setState 连续调用「丢更新」排查:批量更新与函数式更新
前端·javascript·react.js·react·usestate
come112341 小时前
Vue 2 与 Vue 3 语法区别及使用技巧
前端·javascript·vue.js
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:ERP 企业资源模块,一个轻量级进销存的完整实现?
前端·javascript·vue.js·人工智能·前端框架·产品经理·ai编程
虹科网络安全1 小时前
艾体宝新闻|从 SQL 注入到服务器接管:CVE-2026-57517 暴露 Web 管理面板的供应链与安全编码风险
服务器·前端·sql
糖果店的幽灵2 小时前
langgraph的四种state解析
java·前端·javascript·langgraph
顺颂时绥_12 小时前
前端大图片压缩与安卓/苹果设备矫正实践
前端