일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로세스 스케줄링
- 100 days of SwiftUI
- scrollview
- deadlock
- Apple Developer Academy
- UserDefaults
- IOS
- Codable
- 동시성
- Algorithm
- 앨런
- Linked List
- 인프런
- struct
- forEach
- Swift
- core data
- 운영체제
- 비동기
- COLOR
- decode
- @state
- 상호배제
- 알고리즘
- SwiftUI
- 데드락
- 동기화
- async
- 가상 메모리
- 오브젝트
Archives
- Today
- Total
기어가더라도 제대로
[SwiftUI-기초] custom transition 본문
- 커스텀한 View Modifier 를 만드는 것과 방법이 대동소이하다.
- 다만, 우리가 만드려는 것은 .transition() 안에 들어가는 .scale, .opacity 같은 전환 옵션을 만들어보려고 한다.
- 참조링크 : 2022.10.15 - [분류 전체보기] - [SwiftUI-기초] Custom modifier
struct CornerRotateModifier: ViewModifier {
let amount: Double
let anchor: UnitPoint
func body(content: Content) -> some View {
content
.rotationEffect(.degrees(amount), anchor: anchor)
.clipped()
}
}
- amount: 얼마만큼 회전할 지 정도를 정함
- anchor: 어느 축을 기준으로 회전할지 정함
- 이대로 써도 되나, extension 으로 확장해서 좀더 간편하게 사용할 수 있도록 해봄
- .rotationEffect: 3d 와 거의 비슷한데, Z축을 기준으로 회전하는 것, 또한 어느 축을 기준으로 회전할지 잡을 수 있다.
- .clipped(): 이것은 원본 사각형이외에는 보여주지 않겠다는 뜻이다. 코드를 다 만들고 이 부분만 주석처리 해보면 이해가 쉽다.
extension AnyTransition {
static var pivot: AnyTransition {
.modifier(
active: CornerRotateModifier(amount: -90, anchor: .topLeading),
identity: CornerRotateModifier(amount: 0, anchor: .topLeading)
)
}
}
....
.transition(.pivot)
아래와 같이 사용할 수도 있다.
예제 코드
struct ContentView: View {
@State private var isShowingRed = false
var body: some View {
ZStack {
Rectangle()
.fill(.blue)
.frame(width: 200, height: 200)
if isShowingRed {
Rectangle()
.fill(.red)
.frame(width: 200, height: 200)
.transition(.pivot)
}
}
.onTapGesture {
withAnimation {
isShowingRed.toggle()
}
}
}
}
'SwiftUI - 기초' 카테고리의 다른 글
[SwiftUI-기초] class 인 인스턴스의 상태 보존(@StateObject, @ObservedObject) (0) | 2022.11.02 |
---|---|
[SwiftUI-기초] @State가 쓸모 없어지는 지점에 대하여(class, struct) (0) | 2022.11.01 |
[SwiftUI-기초] Animation의 View적인 특성(+ Drag, transition) (0) | 2022.10.30 |
[SwiftUI-기초] Animation 기본 (0) | 2022.10.28 |
[SwiftUI-기초] View 생명주기, View 등장 시 실행 (0) | 2022.10.26 |
Comments