MagnificationGesture
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() }
}
}
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() }
}
}
Yuqoridagi misolda masshtab 0.5x va 2x oralig‘ida cheklangan.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
