[SwiftUI] MagnificationGesture による画像のピンチイン、ピンチアウト


画像を拡大・縮小するにはMagnificationGestureを使うと可能です。Gestureを使うのでピンチイン・ピンチアウトになります。

Swift 5.1
Xcode 11.4

 

MagnificationGesture

 
最初に、MagnificationGesture にサンプルコードがあるのでそのまま実装してみます。

これを実行してみると、updatingを使っているのでGesture後の状態は保持されず元に戻ります。

 
確かにピンチイン・ピンチアウトができるのですが、これでは画像を拡大縮小したままにはできないので他の機能を使います。
 

 

Callbacks

 
MagnificationGestureで使うCallbackのスペックで、画像を拡大縮小させつつ表示するにはonChangedが使えます。

updating: Gestureが変化したときにgesture state propertyをアップデートする、ただし値は保持されない

onChanged:Gestureが変化したときに実行するアクションを追加

onEnded:Gestureが終わった時のアクションを追加

MagnificationGesture.Value:Gestureの変化の値, CGFloat

 

画像の拡大

 
Gestureを使う前に、
画像を拡大するにはImageのサイズ変更を反映させる必要があるため、
resizableとscaleEffectを使います。

 
ボタンをタップすることでサイズが増加していきます。
 

 

サンプルコード

 
ボタンを使ってサイズを変化させたところをGestureを使います。

ContentView.swift

 
これで画像がピンチイン。ピンチアウトできました。
 

 
 
References:
Gestures | Apple Developer Documentation
MagnificationGesture – SwiftUI | Apple Developer
MagnificationGesture – SwiftUI | Apple Developer
onChanged(_:) – MagnificationGesture | Apple Developer
onEnded(_:) – MagnificationGesture | Apple Developer
Image – SwiftUI | Apple Developer Documentation
scaleEffect(_:anchor:) – SecureField | Apple Developer

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする