MagnificationGesture


ULASHISH

SwiftUI imo-ishoralar: MagnificationGesture

Kontentni MagnificationGesture yordamida qisib kattalashtiring (pinch to zoom); u ko‘pincha .scaleEffect bilan birga ishlatiladi.


Sintaksis

Kattalashtirish: masshtab koeffitsiyentini olish uchun MagnificationGesture() dan foydalaning va uni .scaleEffect(scale) bilan qo‘llang.


Qisib kattalashtirish

Rasmni kattalashtirish/kichraytirish uchun uni qising. Qo‘yib yuborilganda u asl o‘lchamiga qaytadi.

Misol

import SwiftUI

struct MagnifyDemo: View {
  @State private var scale: CGFloat = 1
  var body: some View {
    Image(systemName: "photo")
      .resizable().scaledToFit().frame(height: 120)
      .scaleEffect(scale)
      .gesture(
        MagnificationGesture()
          .onChanged { value in scale = value }
          .onEnded { _ in withAnimation(.spring()) { scale = 1 } }
      )
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { MagnifyDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Yuqoridagi misolda rasmni qisish uni kattalashtiradi/kichraytiradi.

Qo‘yib yuborilganda u asl o‘lchamiga qaytadi.



Masshtab oralig‘ini cheklash

Haddan tashqari kichrayish yoki kattalashishning oldini olish uchun masshtabni 0.5x va 2x oralig‘ida cheklang.

Misol

import SwiftUI

struct MagnifyClampedDemo: View {
  @State private var scale: CGFloat = 1
  let minS: CGFloat = 0.5
  let maxS: CGFloat = 2.0
  func clamp(_ v: CGFloat) -> CGFloat { min(max(v, minS), maxS) }
  var body: some View {
    Image(systemName: "photo")
      .resizable().scaledToFit().frame(height: 120)
      .scaleEffect(scale)
      .gesture(
        MagnificationGesture()
          .onChanged { value in scale = clamp(value) }
          .onEnded { _ in withAnimation(.easeInOut) { scale = 1 } }
      )
  }
}
import SwiftUI

struct ContentView: View {
  var body: some View { MagnifyClampedDemo() }
}
import SwiftUI

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup { ContentView() }
  }
}

Misolni ishga tushirish »

Yuqoridagi misolda masshtab 0.5x va 2x oralig‘ida cheklangan.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!