View ProtocolUIKit과 비교하였을 때 SwiftUI의 특징은 struct로 이루어졌다는 것과 View Protocol을 채택하고 있다는 것입니다. SwiftUI에서 우리가 작성하는 대부분의 화면은 View 프로토콜 기반으로 구성되며, 그 중심에는 body라는 프로퍼티가 존재합니다.@MainActor @preconcurrency public protocol View { /// The type of view representing the body of this view. /// /// When you create a custom view, Swift infers this type from your /// implementation of the required ``View/b..
SwiftUI는 애플이 만든 선언형(Declarative) UI 프레임워크로, iOS, macOS, watchOS, tvOS 전반에서 통일된 방식으로 앱의 UI를 구축할 수 있게 해주는 프레임워크입니다. SwiftUI의 탄생 배경UIKit, AppKit 등 기존의 프레임워크는 다음과 같은 문제점을 가지고 있었습니다.UIKit / AppKit의 문제설명명령형 구조복잡한 상태 변화 처리, 많은 버그 유발뷰 업데이트직접 상태를 추적하고, 뷰를 수동으로 갱신코드 중복플랫폼마다 API가 달라, iOS와 macOS 개발을 별도로 해야 함UI와 로직 분리 어려움코드 양이 많아지고, 의도 파악이 힘듦 애플은 이러한 문제를 해결하기 위해 다음과 같은 특징을 지니고 있는 SwiftUI를 개발하였습니다.Swift의 안전성과..
NavigationStack A view that displays a root view and enables you to present additional views over the root view. iOS 16버전부터 업데이트된 NavigationStack에 대해 알아보고, 그와 관련된 예시를 보여드리겠습니다. NavigationStack은 기존의 NavigationView를 대체할 것으로, 루트 뷰를 보여주고, 루트 뷰에 대한 추가적인 뷰를 보여주는 것입니다. 사실 이름에서 알 수 있듯 화면을 네비게이션 형태로 넘겨주는 것인데, 스택의 방식을 사용하여 넘겨주는 것입니다. 스택의 특징과 같이 Push, Pop, Pop to root view 등의 개념을 인지하고 있다면 매우 유용합니다. @MainAc..
ViewModifier A modifier that you apply to a view or another view modifier, producing a different version of the original value. protocol ViewModifier Overview ViewModifier 프로토콜은 어떠한 뷰에서도 적용할 수 있는 재사용 가능한 modifier를 생성하는 것입니다. 예를 들어 SwiftUI를 통해 View를 만들 때, 글자 크기나 폰트 등이 공통적인 특성을 가지는 경우가 있습니다. 이러한 경우에 코드를 작성할 때 각각의 특성을 모두 작성하게 된다면, 코드의 가독성이 떨어지고 비효율적이게 됩니다. 따라서 이러한 공통적인 특성을 묶어서 관리하고 원할 때마다 해당하는 공통적인..