タブレット用プログラムの書き止め

android OS & iPadOS の記録。

【Swift P4.5.1】ScrollViewとZoom

2024-10-03 23:50:57 | Swift iPadOS用

前回の引用からスクロールとズームの両立は複雑だと分かる。
あえて、単純にスクロールとズームを組み合わせたらどうなるか確認をしておく。

で、下にスクロールビューにイメージズームを入れてみた。

結果、スクロールが優先的に作動してしまう。(1ポイント操作)
上手くすればピンチによるズーム。(2ポイント操作)

何かしらの工夫が必要である。

状況は、ズーム後のスクロールは動作する。
しかし、スクロール範囲はズーム後の画像全体ではない。
最初の画像サイズ領域に限られる。何らかの修正をする必要がある。

 

import SwiftUI

struct ContentView: View {
    @State private var currentScale: CGFloat = 1.0
    @State private var lastMagnificationValue: CGFloat = 1.0
    var body: some View {
        ScrollView([.horizontal,.vertical],showsIndicators: false)
        {
            Image(uiImage: UIImage(named: "Test")! ) 
                .resizable()
                .scaledToFill()
                .scaleEffect(currentScale)
                .gesture(
                    MagnifyGesture()
                        .onChanged { value in
                            let changeRate = value.magnification / lastMagnificationValue
                            currentScale *= changeRate
                            currentScale = max(1.0, currentScale )
                            lastMagnificationValue = value.magnification
                        }
                        .onEnded { value in
                            lastMagnificationValue = 1.0
                        }
                )
        }
        .scrollTargetLayout()
        .padding()
    }
}


スクロールとズームの混在は意図した通りの反応でないとストレスが溜まる。
モード切り替えを入れるなどワンクッションが入るとストレス軽減になるのかな?

【追記】
ズーム後にImageの.frame()でズーム後サイズを算出し設定してみたがスクロール範囲の変化なし。

 

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 【Swift P4.5.1】拡大縮小。... | トップ | 【Swift P4.5.1】ScrollView... »

Swift iPadOS用 」カテゴリの最新記事