일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Human interface guide
- Refactoring
- 리팩토링
- Xcode
- clean architecture
- UICollectionView
- SWIFT
- tableView
- rxswift
- ios
- swiftUI
- swift documentation
- 클린 코드
- ribs
- UITextView
- Protocol
- MVVM
- 리펙터링
- uiscrollview
- collectionview
- HIG
- Observable
- Clean Code
- map
- combine
- 스위프트
- uitableview
- 애니메이션
- 리펙토링
- RxCocoa
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbp1eI/btq8KRmZ3SI/Q4lTixbp6tcfZiqdJKQ8E1/img.png)
NSPredicate 메모리 내에서 어떤 값을 가져올때 filter에 대한 조건 사용처1: CoreData에서 특정 데이터를 가져올때 NSPredicate 사용 // CoreData에서 특정 id 값 존재 let request: NSFetchRequest = Entity.fetchRequest() let predicate = NSPredicate(format: "id == $@", id) request.predicate = predicate 사용처2: Regular Expression 문법을 따르므로, 핸드폰 번호 / 이메일 / 패스워드 정규식 체크에 사용 NSPredicate의 메소드인 evaluate(with:)을 사용하여 정규식 판별 Regular Expression 개념 참고 // 핸드폰 번호 정..
Subscripts 배열에서의 Random Access하기 위해 index값을 사용하는데, 이때 인덱스 값이 'Subscripts' ex) arr[3] = 1 swift에서는 class, struct, enum의 []연산자를 subscript 키워드를 통해 정의 가능 swift의 subscript 키워드 swift는 subscript를 정의하여 sequence가 아니더라도 특정 연산이 되게끔 가능 struct TimeTable { let multiplier: Int subscript(index: Int) -> Int { return multiplier * index } } let threeTimeTable = TimeTable(multiplier: 3) print(threeTimeTable[5]) // ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cSwLc0/btq8v2cgBOe/rWL89ISKvIyrArRfES9tx1/img.png)
AR 가상현실(VR)의 한 분야 실제로 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 것 AR기능을 지원하는 장치에만 기능을 구현: 장치 확인 및 사용작 권한 요청 개발자 참고 문서 가상현실 구현 UX 사용자들이 전체 디스플레이를 사용하도록 설계: 실제 세계와 앱의 가상 개체를 표출하는데 최대한 많은 화면을 사용하기 때문 최소 60 frame 을 제공 ARKit의 정보를 이용하여 개체의 크기를 적절하게 조정 실제 표면에 배치 환경 조명 조건 반영 카메라 grain을 시물레이션 실제 표면에 객체의 그림자 표출 카메라 위치가 변경됨에 따라 비주얼 업데이트 반사 표면이 있는 가상 물체가 환경을 어떻게 보여주는지 고려: ARKit의 반사는 카메라가 캡처한 환..
Method 메서드의 정의: 특정 유형과 관련된 함수 인스턴스 작업을 위한 특정 작업 Instance Method 특정 클래스, 구조, 열거 형의 인스턴스에 속하는 함수 class Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func reset() { count = 0 } } let counter = Counter() // 1 counter.increment() // 1 counter.increment(by: 5) // 6 counter.reset() // 0 Self Property 클래스 내에서 self의 의미: 자체 인스턴스 메서드 내에서 현재 인스턴스를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/C6DRP/btq8jKC73LS/fknjQtAnhfYs7xmSFXMKl1/img.png)
App Clip 사용자들이 앱을 다운로드 및 설치하지 않고도 일상적인 작업을 빠르게 수행할 수 있는 경량 버전의 앱 App Clip 사용 방법 NFC 태그, QR코드 스캔, App Clip 코드 App Clip을 사용하기 알맞은 상황: 제한된 시간 동안 사용자들이 작업을 수행하는데 도움이 되는 즉각적인 경험을 앱에서 제공하는 경우 App Clip을 사용하기 알맞은 상황 예시) 렌탈 자전거에서 사용자들이 탭하거나 스캔하여 자전거를 빌릴 수 있는 앱 클립 커피숍에서 빠른 사전 주문을 위한 앱 클립 (고객은 메시지 앱에서 웹 사이트 링크 공유 및 수신자는 메시지 내에서 앱 클립 실행 탭) 푸드 트럭에서 사용자들이 App Clip코드를 스캔하고 즉시 App Clip을 실행하여 음식 주문 레스토랑에서 NFC태그에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AVVtV/btq8hlWn6IK/6UBXZE86YiOmM63lbmnKIK/img.png)
Media Playback AirPlay를 사용하면 iOS, macOS, tvOS 기기에서 Apple TV, HomePod, TV 및 스피커로 미디어 콘텐츠를 무선으로 스트리밍 가능 AirPlay 지원 방법 AVFoundation 프레임워크 사용 (미디어 재생 용도) AVKit 프레임워크 사용 (표준 사용자 control을 제공하고 챕터 탐색, 자막, 스트리밍과 같은 기능 지원) 시스템에서 제공하는 미디어 플레이를 사용 내장된 미디어 플레이어는 대부분의 미디어 앱의 요구 사항을 수용하고 시스템 전체 일관된 재생 경험을 제공 친숙하고 구현하기 쉬우며 새로운 기능과 개선 사항이 자동으로 업데이트 AVPlayerViewController 참고 가능한 가장 높은 해상도로 콘텐츠를 제공 iPhone에서 720p..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BqOTV/btq73bub50E/73U3bbRnJLKENZaiMFQuf1/img.png)
Enumerations enum은 value type Enum 네이밍: 복수가 아닌 단수형태이고 대문자로 시작 enum CompassPoint { case north case south case east case west } var directionToHead = CompassPoint.west CaseIterable case들의 사례를 모두 가져오고 싶은 경우 CaseIterable을 conform하여 구현 'allCases' 프로퍼티 사용 enum Beverage: CaseIterable { case coffee, tea, juice } let numberOfChoices = Beverage.allCases.count print("\(numberOfChoices) beverages available"..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Ob3C6/btq7XroZV8c/yzvkSJnafLDAdn3lkDwEQ0/img.png)
Closure Closure(폐쇄): 클로저는 코드에서 전달 및 사용할 수 있는 2가지의 자체 기능을 가진 블록 정의된 컨텍스트에서 모든 상수 및 변수에 대한 참조를 캡쳐하고 저장 가능 캡쳐: 자신의 블록 외부에 있는 값을 참조하는 것 // ex) 캡쳐: incrementer() 함수 블록에서 runningTotal과 amount인수를 참조 func makeIncrementer(forIncrement amount: Int) -> () -> Int { var runningTotal = 0 func incrementer() -> Int { runningTotal += amount return runningTotal } return incrementer } Closure는 실행 순서 제어가능 클로저는 호출할 ..