일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- uitableview
- MVVM
- Human interface guide
- 클린 코드
- UICollectionView
- Protocol
- ios
- uiscrollview
- rxswift
- 리펙터링
- tableView
- 리팩토링
- 리펙토링
- RxCocoa
- UITextView
- Refactoring
- 스위프트
- Observable
- SWIFT
- collectionview
- HIG
- Clean Code
- map
- Xcode
- swiftUI
- swift documentation
- clean architecture
- ribs
- combine
- 애니메이션
- Today
- Total
목록분류 전체보기 (1617)
김종권의 iOS 앱 개발 알아가기
1. Realm을 사용하는 이유 - UserDefaults는 기본적인 데이터 형식(String, int)와 같은 것만 가능하고 느리지만 상대적으로 Realm은 빠르고 유연함 2. Realm 프레임워크 준비 1) podfile에 프레임워크 추가 및 인스톨 1 2 pod 'RealmSwift', '~> 3.17', :modular_headers => true pod 'Realm', '~> 3.17', :modular_headers => true 2) framework추가 (framework, Libraries, Embedded Content에 추가) 3) cmd + B : 빌드눌러서 업데이트 3. Realm사용 - CRUD - Realm의 데이터베이스 : 클래스 이름으로 만들어짐 (따로 DB를 생성하지 않고..
1. 오토 레이아웃 이란? - 어떤 디바이스에서라도 그에 따라 자동적으로 배치될 수 있게끔 하는 것 - 크게 pin으로 설정하는 방법과, ctrl+드래그앤드랍으로 설정 가능 - 간격을 고정으로 한 오토레이아웃 (뷰의 크기가 변동) - 뷰와 다른 뷰 사이의 간격과 뷰와 뷰컨트롤러 테두리와의 간격을 고정 -> 뷰는 그 크기를 맞추기 위해 자체 크기 변동 * Safe Area : 상태바 등과 겹치지 않게 미리 IDE에서 표시해 주는 것 (파란색 테두리로 표현) 2. 설정 방법 1) pin으로 설정하는 방법 (가장 좋은 방법) 2) 드래그 앤 드랍 방법 뷰에서 고정하려는 곳으로 ctrl + 드래그 앤 드랍 3) resolve auto layout버튼에서 "Add Missing Constraints"로 한번에 설..
1. MapKit frame work 1) 스토리보드에서 Map Kit View삽입 2) JSON으로 넘어온 위도와 경도값을 받아서 표현 단, String보다는 타입 형변환이 쉬운 NSString위주로 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 override func viewDidLoad() { // param은 JSON으로 얻어온 위도와 경도 데이터가 들어있다고 가정 // NSString은 문자열에서 다른 자료형으로 변환하기 쉽기 때문에 String대신에 사용 let lat = (param?["위도"] as! NSString).doubleValue let lng = (param?["경도"] as! NSString).doubleValue // 위도와 경도를 가지고 ..
1. 탭 바 컨트롤러 생성 - Contents Controller가 아닌 Container Controller(직저 콘텐츠를 표현하지 않으면서 다른 뷰 컨트롤러를 유기적인 관계로 제어) - 수평적인 관계를 조정 (네비게이터 컨트롤러는 수직적 관계 조정) - 화면 하단에 "Tab Bar"가 표시 됨 - 맨 앞에 존재 (네비게이터보다 앞에 위치) 1) 생성 - Tab Bar Controller 또는 [Embed In] -> [Tab Bar Controller] 2) 탭 바 컨트롤러에 특정 뷰 컨트롤러 연결 - tab bar controller을 연결하려는 view Controller에 드래그 앤 드랍 - view controllers선택 ("Relationship Segue"라고 함) ※ 탭 바의 순서를 바..
1. 사파리 앱 호출 - 사파리 앱 그대로 호출하는 것이므로 구현하기 가장 단순 - 장점 : ATS(info.plist에 HTTP보안 허가) 설정이 필요없음, 구현이 쉬움 - 특징 : 기존 뷰에서 여는게 아닌, 새로 앱을 실행하는 것 1 2 let url = URL(string:"https://ios-development.tistory.com") UIApplication.shared.open(url!, options: [:]) 2. SFSafariViewController - 컨트롤러 객체에 해당 (스토리 보드 UI에 삽입하는 것이 아니라 단순 코드 호출) - 특징 : 기존 뷰에서 여는 것 1 2 3 4 5 import SafariServices @IBAction func btnAction(_ sende..
1. 네트워크에 대한 기본 지식 1) 통신을 위한 프로그래밍 방향 - 소켓 방법 : 명시적으로 끊을 떄까지 지속해서 연결을 유지하는 방법 (TCP, UDP를 통한 화상통화, RPG 게임) - 비연결성 방법 : HTTP/HTTPS * 앞으로 비연결성 방법에 관한 내용만 진행 2) 웹 서비스의 종류 (웹 서비스 : 웹 페이지 같은 것이 아닌 데이터만을 주고받을 수 있도록 설계된 모듈) - SOAP(Simple Object Access Protocol) : HTTP, HTTPS, SMTP등의 프로토콜들을 통해 XML(eXtensibal Markup Language)형태의 메시지 주고 받는 것 - RESTful (Representational State Transfer) : HTTP프로토콜을 통해 조금더 쉬운 ..
1. 테이블 뷰가 나온 배경 - 방대한 콘텐츠를 표현하기 위함 - 테이블 뷰의 완성 = 테이블 뷰 + 섹션1(테이블 뷰 셀 + 콘텐츠 뷰) + 섹션2(테이블 뷰 셀 + 콘텐츠 뷰) + 섹션n(...) 2. 일반적인 테이블 뷰 - 테이블 뷰 셀의 종류 : Basic, Right Detail, Left Detail, Subtitle, Custom 1) 테이블 뷰 생성 : UITableViewController - 통째로 테이블 뷰 생성 : 스토리보드에서 UITablewView 드래그엔 드롭 cf) UITableViewController가 아닌, UIViewController에서 테이블 뷰 생성 : (1) ~ (4)작업 (delegate, datasource, table view 각 추가) (1) "Table..
1. Delegate패턴 1) 개념 - 프로토콜로 미리 기능에 대한 것을 구현한 후, 그 프로토콜을 구현한 클래스에 기능을 위임시킨 것 1 2 3 4 5 6 7 8 9 10 11 12 class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet var tf: UITextField! override func viewDidLoad() { // tf객체의 대리자를 ViewController에게 위임 self.tf.delegate = self } } extension ViewController: textFieldBeginEditing(_ textField: UITextField) { // } -> 텍스트필드의 기능을 viewController에..