Понимание scaleEffect в SwiftUI

Следующий код анимирует размер изображения сразу после его загрузки, он анимирует его от половины размера до полного размера, но есть кое-что, что я не совсем понимаю в параметрах в scaleFactor.

Может кто-нибудь объяснить параметр внутри 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
                }
        }
    }
}

1 ответ

Решение

Есть несколько заявленных перегруженных 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)

который задокументирован как

Масштабирует визуализированный вывод этого представления на заданную величину как в горизонтальном, так и в вертикальном направлениях относительно точки привязки.

а также scaleFactor ? 1.0 : 0.5 означает просто тернарный оператор на месте для первого scale параметр, который применяется либо 1.0 (идентичность), либо 0.5 (половина) в зависимости от соответствующего состояния просмотра.

Другие вопросы по тегам