일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙터링
- Xcode
- 클린 코드
- Human interface guide
- UITextView
- uiscrollview
- swiftUI
- map
- uitableview
- 리펙토링
- ios
- swift documentation
- collectionview
- combine
- RxCocoa
- Observable
- Protocol
- clean architecture
- MVVM
- ribs
- Refactoring
- 스위프트
- tableView
- UICollectionView
- rxswift
- Clean Code
- SWIFT
- 리팩토링
- HIG
- 애니메이션
- Today
- Total
목록분류 전체보기 (1642)
김종권의 iOS 앱 개발 알아가기
xib, nib란? Xml Interface Builder: 플랫파일(아무런 구조적 상호관계각 없는 레코드들이 들어 있는 파일) -> nib와 기능적으로 동일 Next Interface Builder: nib는 바이너리 파일 즉, xlb를 nib로 바꾼 후 bundle(실행할 때 같이 실행되는 파일)에 올리는 것 바이너리 파일들을 xcode에서 관리하기 힘들기 때문에 xlb로 먼저 저장 custom cell 생성 배치 및 IBOutet생성 bind함수 정의 bind함수 정의 이유: 추후에 tableView의 델리게이트 함수에서 cell을 만든 후, dataSource에 관한 값을 cell에 입력할 때 아래와 같이 이용 func tableView(_ tableView: UITableView, cellFor..
main run loop Main Run Loop : 사용자의 이벤트를 받아들이거나, response 하는 때 Update Cycle: Main Run Loop에서 response를 리턴한 경우 진입 (이 때 레이아웃을 재배치하거나 view를 그림) * iOS앱은 60fps이므로 update cycle의 주기도 1/60초 -> 뷰를 갱신하고 싶어도 이 갱신 주기를 기다려야함 layoutSubviews() 이 메소드는 위에서 레이아웃을 재배치할 때 사용되는 UIView의 메소드 (expensive하기 때문에 다른 메소드를 통해 간접적으로 호출) 1) setNeedsUpdate() : 다음 update cycle에 레이아웃을 갱신 2) layoutIfNeeded(): 즉시 레이아웃을 갱신하라 텍스트필드 클릭..
preferredStatusBarStyle변수를 override하여 사용 (UIViewController에 상속되어 있음) 예) 검은색 배경에 흰색 글씨 배치 1) 검은색 view 2) status bar지정 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } } 결과)
* 화면 배치 및 이동 : www.spectacleapp.com 사용기능: 왼쪽위 / 오른쪽위 / 왼쪽아래 / 오른쪽아래 / 왼쪽 반 / 오른쪽 반 / next display - 한손으로 화면전환 쉽게 할 수 있도록 아래와 같이 설정 - 추가적으로, 화면을 크게하는것, 작게하는 단축키 추가 시스템 종료 * chrome에서 마우스 없이 사용하기 : vim extension 1) 스크롤 이동 관련 j . k : 위/아래로 스크롤 h, l : 왼/오른쪽으로 스크롤 u, d : 위/아래로 많이 스크롤 gg: 커서를 화면 최 상단으로 G: 커서를 하면 최 하단으로 2) 이동 f: 페이지 이동 단축키 F: 새로운 탭에서 페이지 이동 o: 현재 탭에서 URL이요 3) 기타 ?: 단축키 목록 o: 검색창 열기(open..
해피해킹 키보드 설정 2번 3번 스위치 -> on Karabiner 설정 caps_lock과 오른쪽 cmd, option 변경 F1 ~ F9 키 활성화 아래 옵션 체크
Delegate Proxy란? delegate를 사용하는 부분을 RxSwift로 표현할 수 있도록 하는 것 * 원리 : DelegateProxy.swift 파일과 DelegateProxyType.swift 이용 * Delegate개념 : 함수 실행위치를 미리 선언해 놓고, 구현은 직접 하라고 delegate시키는 것 -> (protocol로 선언) import UIKit import RxSwift import RxCocoa protocol MyDelegate { func willStart() func end() } class UISomething: NSObject { var delegate: MyDelegate? = nil func start() { delegate?.willStart() // 이 함수를..
custom extension이란? 객체.rx.함수접근이 가능하게끔 표현 첫 번째 방법, Binder * Oberver only (Observable처럼 값을 받아서 처리한다는 개념이 아닌, 함수처럼 안에서 수행하라는 의미) * Main Scheduler에서 수행하는 것이 default class ViewController: UIViewController { let bag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() let obs = Observable.of(true) rx.myCustom.onNext(false) // observer라 가능 rx.myCustom.subscribe // observer라 불가능 obs.asDriver..
1. 개념 - 특정 객체가 NotificationCenter에 등록된 Event를 발생(post) - 등록된 Observer들이 Event에 대한 행동을 취하는 것 2. 구현 버튼을 클릭하면 Label이 안보이게 하는 내용 1) post (이벤트 발생) @IBAction func unhide(_ sender: Any) { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "unhide"), object: nil, userInfo: nil) } 2) 이벤트 처리 adObserver // in the viewDidLoad NotificationCenter.default.addObserver(self, selector: #selector(..