swiftui中使用scaleEffect和rotationEffect实现缩放和旋转效果

185 阅读1分钟

在SwiftUI中,你可以使用.scaleEffect()和.rotationEffect()来实现缩放和旋转动画,缩放和旋转的内容可以是图片,文字等view视图。

scaleEffect可以实现缩放效果,配合动画可以实现好看的过度效果,其中的参数是缩放的倍数,1表示原本大小,大于1表示放大,小于1表示缩小。

示例代码:

Text("Hello, World!")
                .font(.title)
                .scaleEffect(useEffect ? 1 : 0.7)

rotationEffect表示实现旋转效果,配合动画可以实现好看的旋转效果,其中的参数是旋转的度数,示例代码:

Image("xigua")
                .resizable()
                .frame(width: 200, height: 200)
                .scaleEffect(useEffect ? 1 : 0.7)
                .rotationEffect(.degrees(useEffect ? 100 : 0))

案例使用代码:

//
//  ScalRotaEffect.swift
//  SwiftBook
//
//  Created by Song on 2024/7/21.
//

import SwiftUI

struct ScalRotaEffect: View {
    // 缩放和旋转效果
    @State var useEffect = false
    var body: some View {
        VStack {
            Text("Hello, World!")
                .font(.title)
                .scaleEffect(useEffect ? 1 : 0.7)
            Image("xigua")
                .resizable()
                .frame(width: 200, height: 200)
                .scaleEffect(useEffect ? 1 : 0.7)
                .rotationEffect(.degrees(useEffect ? 100 : 0))
            Button(action: {
                withAnimation { useEffect.toggle() }
            }, label: {
                Text("旋转和缩放")
            }).padding()
        }
    }
}

#Preview {
    ScalRotaEffect()
}