了解 SwiftUI 中的 scaleEffect

Understanding scaleEffect in SwiftUI

以下代码在图像加载后立即设置图像大小的动画,将其从一半大小设置为完整大小,但是我对 [=11 中的参数不完全了解=].

有人可以解释一下 scaleEffect 修饰符中的参数吗?

  1. 怎么可以带布尔型参数?
  2. 如何输入比例范围 1.0 : 0.5 参数?
  3. ? 有什么作用?

据我所知,scaleEffect修饰符只有两个参数,一个CGFloat和一个UnitPoint

struct ContentView: View {
    @State private var scaleFactor = false
    var body: some View {
        VStack {
            Image("top-image")
                .scaleEffect(scaleFactor ? 1.0 : 0.5)
                .animation(.easeInOut(duration: 1.0))
                .onAppear() {
                    self.scaleFactor = true
                }
        }
    }
}

有几个声明的重载scaleEffect

extension View {

    @inlinable public func scaleEffect(_ scale: CGSize, anchor: UnitPoint = .center) -> some View

    @inlinable public func scaleEffect(_ s: CGFloat, anchor: UnitPoint = .center) -> some View

    @inlinable public func scaleEffect(x: CGFloat = 0.0, y: CGFloat = 0.0, anchor: UnitPoint = .center) -> some View
}

在问题的例子中它使用了第二个,所以它实际上是

        Image("top-image")
            .scaleEffect(scaleFactor ? 1.0 : 0.5, anchor: .center)

记录为

Scales this view’s rendered output by the given amount in both the horizontal and vertical directions, relative to an anchor point.

scaleFactor ? 1.0 : 0.5 表示第一个 scale 参数的就地三元运算符,根据相应的视图状态应用 1.0(身份)或 0.5(一半)。