[swift] SwiftUI에서의 화면 회전과 애니메이션 처리 방법
iOS 앱을 개발할 때 화면이 회전하는 경우를 고려하여 레이아웃을 유동적으로 처리해야 합니다. SwiftUI에서는 간단한 방법으로 화면 회전과 애니메이션을 처리할 수 있습니다. 이 글에서는 SwiftUI를 사용하여 화면 회전과 애니메이션을 처리하는 방법에 대해 알아보겠습니다.
화면 회전 감지
SwiftUI에서는 @Environment
속성 래퍼를 사용하여 환경 객체를 가져와서 화면의 회전 상태를 감지할 수 있습니다. 앱이 회전되면 sizeClass
속성 값이 변경되므로, 이를 활용하여 화면 회전 이벤트를 처리할 수 있습니다.
import SwiftUI
struct ContentView: View {
@Environment(\.horizontalSizeClass) var horizontalSizeClass
var body: some View {
if horizontalSizeClass == .compact {
// 가로 모드
// ...
} else {
// 세로 모드
// ...
}
}
}
화면 회전 애니메이션
화면이 회전할 때 애니메이션을 추가하려면 withAnimation
함수를 사용하여 애니메이션을 적용할 수 있습니다. 아래의 예시는 화면 회전 시 rotationEffect
를 사용하여 애니메이션을 적용하는 방법을 보여줍니다.
struct ContentView: View {
@State private var rotationAngle: Double = 0.0
var body: some View {
Rectangle()
.frame(width: 200, height: 200)
.rotationEffect(Angle(degrees: rotationAngle))
.onTapGesture {
withAnimation(.linear(duration: 1.0)) {
self.rotationAngle += 90
}
}
}
}
이제 화면 회전과 애니메이션을 적용하는 방법에 대해 간단히 알아보았습니다. SwiftUI를 사용하면 간편하게 화면 회전을 감지하고 애니메이션을 적용할 수 있으므로, 다양한 디바이스에서 사용자 경험을 향상시킬 수 있습니다.
더 많은 자세한 내용은 공식 SwiftUI Documentation을 참고하세요.