목록SwiftUI - 기초 (55)
기어가더라도 제대로

커스텀 modifier 에 이은 커스텀 컨테이너입니다. VStack, HStack, ZStack, 과 같은 것을 만들어 볼겁니다. 제가 최근에 달력을 만들일이 있었어요. UIKit 에서는 UICollectionView 를 사용했었는데, SwiftUI 엔 마땅한게 없더라구요. 16 버전에서 Calendar 기능이 추가되긴 하는데, iOS 15버전에선 어렵더라구요 한번 calendar 를 사용하기 위한 Grid 컨테이너 뷰를 만들어보죠 ! 이게 컨테이너의 특성상 Content를 받아야합니다. 그래서 내부는 받을 Content 를 제네릭 하게 View 타입이라고 선언하는 것이구요. GridStack 자체도 물론 View 타입이라고 말합니다. Body 도 완성을 해봅시다. 이중 ForEach 문으로 Grid 형..

천리 길도 한걸음부터 라는 말이 있습니다. 아주 SwiftUI의 특성을 잘 나타내는 말입니다. 어떤 View 에 modifier를 붙여준다면 일어나는 일은 무슨 일일까요? 실제 예제에서 알아보죠 Modifier를 적용하면? Button("Hello, world!") { // do nothing } .background(.red) .frame(width: 200, height: 200) 200 * 200 인 버튼이 색상을 빨간색으로 채운 채로 나타날까요? "Hello, world!" 만큼의 배경 색상만 빨간색인 채로 나올까요? 정답은 후자입니다. modifier가 많아도 결국에 최종 view 가 나오는 로직은 N + 1 입니다. modifier를 적용하면 기존 View에 덧붙이는게 아닌, modifier가..

1. 성능상의 이유 Class라고 하면 상속간에 받는 모든 속성과 프로퍼티가 UIView 마다 상속됨 UILabel, UIButton, 등 생각해보면 많은 것들이 UIView나 UIControl로 부터 상속받는다. UIView 의 경우 합이 약 200개의 속성과 메서드를 물려받는다. Struct는 보이는 코드가 전부임 View가 Struct 인 이유임 2. 변수를 깔끔하게 변경하기 위해 Class 는 인스턴스가 let으로 선언되어 있어도 내부 프로퍼티가 var면 변경 가능 struct는 인스턴스가 let으로 선언되어 있다면 내부 프로퍼티가 var여도 변경 불가능 시스템 사용중에 상태 변경이 가능한 프로퍼티를 @State로 선언해서 변경가능성을 열어줌 3. View 의 뒤에는 뭐가 있을까? "아무것도 없다..