SwiftUI만으로 개발을 진행하기에 한계가 있다?SwiftUI는 비교적 새로운 UI프레임워크이다. UIKit은 오랜 시간 동안 개발되고 개선되어 왔으며, 다양한 UI요소와 상호작용 패턴을 지원한다. 반면 SwiftUI는 아직 발전 중이며, 특히 복잡한 UI패턴이나 특수한 사용자 인터랙션을 구현할 때 제한이 있다. API 커버리지 측면에서도 SwiftUI는 아직 UIKit의 모든 기능을 완전히 대체하지는 못한다. 카메라, 복잡한 제스처 처리, 고급 텍스트 편집 기능, 세밀한 애니메이션 제어 등 UIKit이 더 효과적이고 풍부한 API를 제공한다. 따라서 이러한 기능이 필요한 앱에서는 UIKit 컴포넌트를 SwiftUI에 통합해야하는 경우가 많다. 성능 최적화 측면에서도 UIKit이 아직 우위를 점하..
@Binding @Binding은 다른 뷰가 소유한 데이터에 대한 참조를 만드는 프로퍼티 래퍼이다. 마치 포인터처럼 실제 데이터를 직접 소유하지 않고 데이터를 참조만 한다. 양방향 데이터 바인딩// 상위 뷰@State private var score: Int = 0// 하위 뷰로 전달ChildView(score: $score)// 하위 뷰@Binding var score: Int 하위 뷰에서 값을 변경하면 상위 뷰의 값도 자동으로 변경되고, 상위 뷰에서 값을 변경하면 하위 뷰의 값도 자동으로 변경된다. ✅ 바인딩을 전달할 땐 $를 붙여서 전달한다.init(someValue: Binding = .constant(defaultValue)) { _someValue = someValue}✅ 생성자를 사용해서..
@State @State는 SwiftUI에서 뷰의 상태를 관리하기 위한 속성 래퍼이다. @State는 뷰의 상태 변화를 감지하고, 상태가 변경되면 자동으로 뷰를 다시 렌더링하게 한다. 간단한 예제코드로 알아보자.import SwiftUIstruct StarButtonView: View { private var isTapped: Bool = false var body: some View { Button(action: { self.isTapped.toggle() }, label: { Image(systemName: "star.fill") .foregroundStyle(isTapped ? .yellow..
SwiftUI에서 Stack은 UI요소를 그룹화하고 배치하는 데 사용되는 기본적인 레이아웃 컨테이너이다. HStack (Horizontal Stack)SwiftUI에서 사용되는 수평 스택이다. ✅ 자식 뷰를 수평으로 배열한다.✅ 기본적으로 중앙 정렬되지만, alignment 매개변수로 변경 가능하다.✅ spacing 매개변수로 요소 간 간격을 조절할 수 있다.✅ 주로 가로로 나열된 UI요소들(ex: 툴바, 버튼 그룹 등)을 만들 때 사용된다. .top : 자식 뷰들을 HStack의 상단에 정렬한다..center : 자식 뷰들을 HStack의 수직 중앙에 정렬한다..bottom : 자식 뷰들을 HStack의 하단에 정렬한다..firstTextBaseline : 텍스트의 첫 번째 기준선을 기준으로 정렬한다..