SwiftUI 표와 뒤를 전환하여 카드 넘김을 표현
소개
조금 편리한 것을 만들어 보았습니다. 카드 게임을 만들거나 재미있는 UI를 앱에 통합하고 싶을 때.
사용법
표: true, 뒤: false
표: true, 뒤: false
@State var isFront = true
같은 느낌으로, 표리의 상태를 나타내는 변수 를 만들어 둡니다.버튼을 누를 때나 이 변수를 변경하면 앞뒤가 바뀝니다.
플립
Flip(変数, { 表 }, { 裏 })
를 사용합니다. Sample.swift
...
// 裏と表がある View
Flip(isFront: isFront, // 先に作っておいた変数 isFront
front: {
Image("H1") // 表面 ハートのA
},
back: {
Image("Back") // カード裏面
})
...
Copipe 코드
통째로 복사하고 프로젝트의 어딘가에 있습니다.
Flip.swift
import SwiftUI
struct Flip<Front: View, Back: View>: View {
var isFront: Bool
@State var canShowFrontView: Bool
let duration: Double
let front: () -> Front
let back: () -> Back
init(isFront: Bool,
duration: Double = 1.0,
@ViewBuilder front: @escaping () -> Front,
@ViewBuilder back: @escaping () -> Back) {
self.isFront = isFront
self._canShowFrontView = State(initialValue: isFront)
self.duration = duration
self.front = front
self.back = back
}
var body: some View {
ZStack {
if self.canShowFrontView {
front()
}
else {
back()
.rotation3DEffect(Angle(degrees: 180), axis: (x: 0, y: 1, z: 0))
}
}
.onChange(of: isFront, perform: {
value in
DispatchQueue.main.asyncAfter(deadline: .now() + duration/2.0) {
self.canShowFrontView = value
}
})
.animation(nil)
.rotation3DEffect(isFront ? Angle(degrees: 0): Angle(degrees: 180), axis: (x: CGFloat(0), y: CGFloat(10), z: CGFloat(0)))
.animation(.easeInOut(duration: duration))
}
}
사이고에게
"넘기는"은 뭔가 좋은 소리입니다.
Reference
이 문제에 관하여(SwiftUI 표와 뒤를 전환하여 카드 넘김을 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Rubydog/items/7b8c64608ccdb75c50ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import SwiftUI
struct Flip<Front: View, Back: View>: View {
var isFront: Bool
@State var canShowFrontView: Bool
let duration: Double
let front: () -> Front
let back: () -> Back
init(isFront: Bool,
duration: Double = 1.0,
@ViewBuilder front: @escaping () -> Front,
@ViewBuilder back: @escaping () -> Back) {
self.isFront = isFront
self._canShowFrontView = State(initialValue: isFront)
self.duration = duration
self.front = front
self.back = back
}
var body: some View {
ZStack {
if self.canShowFrontView {
front()
}
else {
back()
.rotation3DEffect(Angle(degrees: 180), axis: (x: 0, y: 1, z: 0))
}
}
.onChange(of: isFront, perform: {
value in
DispatchQueue.main.asyncAfter(deadline: .now() + duration/2.0) {
self.canShowFrontView = value
}
})
.animation(nil)
.rotation3DEffect(isFront ? Angle(degrees: 0): Angle(degrees: 180), axis: (x: CGFloat(0), y: CGFloat(10), z: CGFloat(0)))
.animation(.easeInOut(duration: duration))
}
}
"넘기는"은 뭔가 좋은 소리입니다.
Reference
이 문제에 관하여(SwiftUI 표와 뒤를 전환하여 카드 넘김을 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Rubydog/items/7b8c64608ccdb75c50ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)