OptionSet 이란 OptionSet은 Enum 타입과 유사하지만 한 번에 둘 이상의 상태를 나타낼 수 있습니다. OptionSet 프로토콜을 준수하여 비트 마스킹이 가능하고 개별 비트 집합을 표현할 수 있습니다. 참고로 문서에 따르면 Apple SDK의 300개 이상의 타입에서 사용되고 있습니다. 서브 뷰의 autoresizing을 적용하려는 상황을 가정해보겠습니다. subview.autoresizingMask = [] subview.autoresizingMask = .flexibleTopMargin subview.autoresizingMask = [.flexibleLeftMargin, .flexibleTopMargin] OptionSet은 SetAlgebra 프로토콜을 준수하기 때문에 Set 자료..
간단한 xcrun simctl 명령어를 통해 실행 중인 시뮬레이터의 앱 내 Document 폴더를 확인할 수 있습니다. 1. iOS 시뮬레이터를 실행합니다. 2. `xcrun simctl` 명령어를 사용하여 현재 실행중인 iOS 시뮬레이터 앱 폴더 경로를 확인할 수 있습니다. (my.app.identifier 대신 앱의 bundle ID를 입력합니다.) xcrun simctl get_app_container booted my.app.identifier data 3. 현재 실행중인 iOS 시뮬레이터 앱 폴더 경로로 이동 후 Document 폴더를 확인할 수 있습니다. cd $(xcrun simctl get_app_container booted my.app.identifier data) open . 출처 w..
Render loop란 유저가 앱과 상호작용하기 시작할 때, 새로운 프레임이 렌더링된다. (아이폰 또는 아이패드 유저는 60Hz 프레임 레이트를 갖는다. 각 프레임 시간은 16.67ms(1/60)이다.) 이렇게 화면에 새 프레임을 렌더링하는 주기를 “Render loop" 라고 한다. Render loop의 목적은 모든 뷰가 모든 프레임에 대해 의도한대로 표시되도록하는 것이고 이 구성 요소를 이해하면 레이아웃 변경과 같은 가능한 함정에 빠지지 않게 된다. 또한 중복 작업을 피하는 데 매우 유용하다. Render loop는 다음의 세 단계로 구성된다. 1. Update Constraints (레이아웃 계산) 2. Layout (이전 단계의 레이아웃 값을 뷰에 입력) 3. Display (레이아웃 bound..
description property var description: String { get } description 프로퍼티를 통해 인스턴스의 텍스트 표현을 할 수 있습니다. print(_:) 함수로 인스턴스를 출력하고자 할 때, 인스턴스의 description 프로퍼티를 사용합니다. 그렇다는 것은 인스턴스 내부에 description을 정의해주지 않아도 이미 구현이 되어있다는 것입니다. 예를 들면, CGFloat 데이터 타입에는 description property가 구현되어 있음을 확인할 수 있었습니다. extension CGFloat : CustomStringConvertible { /// A textual representation of `self`. public var description: S..
UITableView 또는 UICollectionView와 같이 콘텐츠 영역을 스크롤링 가능한 스택 뷰를 만들어보고자 합니다. Storyboard 구현 및 소스 코드 구현 방법을 차례대로 작성하였습니다. Storyboard 구현 1. Vertical StackView를 추가하고 StackView의 subviews로 4개의 이미지 뷰를 순서대로 추가합니다. 2. StackView를 선택하고 상단 메뉴에서 Editor > Embed In > Stack View 를 선택하여 ScrollView를 Embed 합니다. 3. StackView가 스크롤 뷰의 가로, 세로 영역에 맞게 떨어지도록 오토레이아웃을 설정합니다. StackView를 선택하고 오른쪽 하단 3번째 아이콘(Resolve Auto Layout Iss..
Autoresizing이란 개발자가 동적 레이아웃을 구성할 수 있도록 Apple이 도입한 예전 방식의 기능으로 부모 뷰가 커지거나 줄어듦에 따라서 서브 뷰의 크기나 위치를 조정하는 방식을 결정할 수 있다. Autoresizing은 6가지 속성의 유연성을 정의한다. - UIView.AutoresizingOptions.flexibleWidth - UIView.AutoresizingOptions.flexibleHeight - UIView.AutoresizingOptions.flexibleLeftMargin - UIView.AutoresizingOptions.flexibleRightMargin - UIView.AutoresizingOptions.flexibleTopMargin - UIView.Autoresizi..