본문 바로가기

분류 전체보기

(35)
[SwiftUI] 뷰(View)가 여러개인 경우 효율적인 애니메이션 스케쥴링 방법 안녕하세요 iOS공부를 하고있는 주니오스라고 합니다. 최근에 제가 혼자 프로젝트를 진행하고 있는데요. 한 스크린에 여러가지 뷰들이 상화작용하여 움직이는 형태를 구현하려 했습니다. 각 뷰의 애니메이션 상태를 중앙집중식으로 관리하기 위해 아래 사진과 같은 구조를 선택했습니다. 이구조의 장점은 다음과 같습니다. View들 담고있는 Screen에서 상태변화를 발생시킬 경우 바인딩을 통해 뷰들을 관리할 수 있다. 구조적인 애니메이션 구현이 가능하다. 뷰의 상태를 관리하기 위해 각 뷰마다 자신의 애니메이션 상태를 저장하는 ViewState타입이 존재합니다. 아래 코드는 실제로 구현한 ViewState코드 입니다. 아래코드는 Screen코드의 일부입니다. State랩퍼로 각 뷰의 상태를 저장하고 Binding관계를 ..
[SwiftUI] Transition사용법 심층정리 - 주니오스의 iOS어드벤쳐 개요 안녕하세요! SwiftUI를 처음 배울당시 Transition을 뷰에 적용하는 것에 많은 시행착오를 격었었습니다. 🥹 명확하게 글로 정리하여 참고하면 좋을 것 같아 글을 작성하였습니다! Transition이 사용될 수 있는 경우 기본적으로 Transition은 랜더링되어 있는 뷰가 사라지거나 나타나는 경우에 사용될 수 있습니다. 자주 사용되는 경우로는 아래 3가지경우가 있습니다. if문 사용 switch문 사용 List, Foreach에 전달된 아이템 소스의 변동 Transition사용하기 Transition은 기본적으로 애니메이션과 함께 사용되어야 합니다. 하지만 아시다시피 애니메이션을 적용할 수 있는 방법은 크게 2가지 있습니다. 명시적 애니메이션(explicit animation) withAn..
[SwiftUI] UIViewRepresentable사용 개요 UIViewRepresentable프로토콜을 사용하여 UIKit에서 사용되는 뷰들을 SwiftUI환경에서 랜더링할 수 있다. 해당 프로토콜을 채택하는 구조체는 SwiftUI에서 다른 뷰들처럼 사용될 수 있다. 프로토콜의 요구사항에 대해 우선 알아보자. (Required) makeUIView(context:) 애 매서드는 View Object(SwiftUI 구조체)를 생성할 때 단 한번만 호출된다. 매개변수로 전달받는 context에 담긴 정보를 사용하여 반환할 뷰(UIKit view)의 초기설정을 할 수 있다. 아래코드는 구조체의 프로퍼티로 선언한 뷰들의 초기설정을 수행하고 반환하는 예시이다. let label = UILabel() let container = UIView() ... func mak..