| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Clean Code
- uiscrollview
- UITextView
- uitableview
- RxCocoa
- SWIFT
- Observable
- Xcode
- Refactoring
- 스위프트
- Human interface guide
- MVVM
- HIG
- map
- tableView
- swift documentation
- 리팩토링
- swiftUI
- 클린 코드
- ribs
- UICollectionView
- rxswift
- 리펙토링
- ios
- Protocol
- clean architecture
- collectionview
- scrollview
- combine
- 애니메이션
- Today
- Total
목록ios (1133)
김종권의 iOS 앱 개발 알아가기
튜플에서의 비교 연산자 튜플의 type이 각각 같은 경우 비교 가능 let first = (1, "a") > (2, "b") // false let second = (1, "a") > (1, "b") // false let third = (2, "c") > (1, "b") // true Nil-Coalescing 연산자 optional binding이라 하지 않고 Nil-Coalescing하는것을 주의 var data: String? = "test" print(data ?? "default") Nil-Coalescing 연산자와 동일 코드 data != nil ? a! : b One-Sided Ranges Index에서 접근 var names = [1, 2, 3, 4, 5] for name in name..
Int Swift는 현재 플랫폼의 bit에 따라 적용 32bit 플랫폼 -> Int는 Int32와 동일 64bit 플랫폼 -> Int는 Int64와 동일 UInt UInt또한 Int와 동일하게 플랫폼의 bit에 따라 적용 Type Safety, Type Inference swift는 type safe 언어이므로, 컴파일타임에 오류를 표출하므로, 개발 프로세스에서 빠른 오류 포착 용이 만약 타입을 지정해주지 않는 경우 컴파일 타임에 Type Inference // Type Inference let age = 42 // Int로 추론 let pi = 3.141592 // Double로 추론 Type Aliases typealias 키워드는 type의 별칭을 정의 class Map { typealias Zoo..
Label 화면 인터페이스 요소를 설명하거나 짧은 메시지를 제공 사용자 입장에서 간결함을 느끼도록 최대한 짧게 유지 사용자가 시스템에서 text size를 변경할 때 반영이 되도록 dynamic type size 적용 string에 관한 애플 가이드 * 참고 https://developer.apple.com/design/human-interface-guidelines/ios/controls/labels/
Stored Property 정의: class, struct에서 instantce의 일부로 저장되는 상수(let) 또는 변수(var) default 값 또는 init을 사용하여 값 할당 lazy property: 해당 property가 사용될 때 초기화 let으로 선언 불가: let은 초기화가 완료 되기 전에 항상 값을 가져야 하므로 property의 초기 값이 인스턴스의 초기화가 오나료 될 때까지 알 수 없는 외부 요인에 의존할 때 사용 property의 초기 값에 복잡하거나 계산 비용이 많이 드는 설정이 필요할 때 or 필요할 때까지 수행해서는 안되는 경우에 사용 lazy 주의 사항: lazy property는 여러 스레드에서 동시에 접근되고, 아직 초기화 되지 않은 경우 한 번만 초기화 된다는 보장..
Edit Menus TextField, TextView, WebView, ImageView에서 요소를 길게 터치하거나 두 번 탭하여 콘텐츠를 선택하고 복사 및 붙여넣기와 같은 편집 옵션 컨텍스트에 적합한 명령어를 표출 일반적인 구성: cut, copy, paste, select, select all, delete 위 명령 중 하나를 선택적으로 비활성화 하는 기능이 존재 image, text와 같은 요소를 선택하지 않는 부분에서는, 메뉴에 copy, paste와 같은 항목이 표출되지 않도록 구현 메뉴의 모양은 변경할 수 없지만 위치를 변경할수 있기 때문에, 중요한 내용이나 인터페이스의 일부를 가리지 않도록 필요의 경우 edit menu의 배치를 조정 edit menu와 동일한 기능을 가진 다른 contro..
Context Menus 상황에 맞는 메뉴를 제공하여 인터페이스를 복잡하게하지 않고 화면 항목과 관련된 추가 기능에 엑세스 할 수 있도록 표출 Peek and Pop: long touch 시 실행 사용 가이드: https://developer.apple.com/documentation/uikit/uicontextmenuinteraction 상황에 맞는 메뉴를 일관되게 채택: 어떤 곳에서는 항목에 대한 컨텍스트 메뉴를 제공하지만 다른 곳에서는 제공하지 않는 경우, 사용자 입장에서 앱에 문제가 있다고 판단 상황에 맞는 메뉴에서 각 명령에 글리프를 포함: 글리프는 명령의 의미를 강화하여 사용자들이 그 기능을 즉시 이해할 수 있게하는 장점이 존재 (SF symbol) 가장 자주 사용하는 항목을 메뉴 최상단에 위..
TableView Section의 구성 = 한개의 Header + 다수의 Cell + 한개의 Footer style은 세가지가 존재: https://ios-development.tistory.com/538 * 3가지 스타일 실행화면 plain grouped inset grouped Section 사용 방법 Cell 이용과 동일하게 delegate에서 Section의 개수와 header에 관한 함수, footer에 관한 함수에 각각 데이터 반환하여 사용 extension ViewController: UITableViewDelegate, UITableViewDataSource { // MARK: - Section func numberOfSections(in tableView: UITableView) -> I..
TableView의 3가지 style section의 개념 = header + rows + footer grouped는 header와 footer의 간격을 늘려주는 것 inset grouped는 rows들의 bounds가 둥근 모형으로되고 row양 옆에 inset이 들어가는 것 plain grouped inset grouped * 3가지 스타일 실행화면 plain grouped inset grouped
