목록iOS (27)
teunteun2
인스타그램 클론코딩을 하면서 'avatar1 첫번째 게시물' 부분을 하나의 UILabel로 만들어주었다. NSMutableAttributedString을 통해 폰트와 굵기 등의 스타일은 다르게 주었지만 사용자아이디를 눌렀을 때와, 그 외 content 부분을 눌렀을 때 다른 이벤트가 발생하도록 하려면 어떻게 해야할까 우선 UITapGestureRecognizer로 눌린 부분의 CGPoint가 어느 영역에 있는 것인지 알아야했기 때문에 사용자아이디 text부분의 CGRect를 계산하는 메서드가 필요했다. 그래서 공부하게 된 Textkit... TextKit TextKit은 텍스트저장소를 관리하고, 텍스트 기반의 콘텐츠 레이아웃을 담당한다. 근데 우리는 한번도 import TextKit이라고 코드를 쓴적이 ..
RxDataSource Github에 소개된 RxSwift로 TableView(CollectionView) 만드는 4가지 방법 RxSwift로 한 종류의 Cell을 가진 CollectionView 만들기 RxSwift로 두 종류 이상의 Cell을 가진 TableView 만들기 CollectionView in TableView Cell Dispose issue [0] RxSwift로 TableView 만드는 4가지 방법 RxDataSource Github 페이지에 가보면 TableView 를 만드는 방법 4가지를 볼 수 있는데영 rx.items(dataSource: ...) ⇒ RxDataSource 이용 rx.items(cellIdentifier:String) ⇒ Cell을 xib 파일로 생성했을 때 쓰..
순서 Operator란? Filtering Operator .skip .distinctUntilChanged Operator란? Operator, 거의 모든 RxSwift의 연산자는 Observable 에서 동작하고, Observable를 리턴하는데요, 따라서 Observable을 생성할 때에도, Observable 내에서 필요한 항목만 필터링할 때에도, 여러개의 Observable를 합칠 때에도 Observable를 가지고 이리저리 굴리기 위해선 Operator가 꼭 필요합니다. Operator의 큰 특징은 바로 Chaining 이죠 ! Chaining이란 연산자를 연이어 실행시켜 체인 형태로 만드는 것을 의미합니다. 예시를 한 번 볼까요 ? - TextField로 입력받은 핸드폰번호가 유효한 번호인지..
오늘 2주차 솝트 세미나를 들으면서 정말 오랜만에 중첩된 구조의 스택뷰를 레이아웃을 잡아봤는데,, 한번 잘못 잡으면 도통 어디서부터 뭐가 잘못됐는지 모르겠어서 답답해서 정리해본 Stack View 레이아웃 잡기 바로 시작해볼까용 ㅋ 1. 안쪽부터 바깥쪽으로 보통 스택뷰 레이아웃을 잡을 땐 안쪽부터 바깥쪽으로 잡는 것이 안꼬이고 쉽다고 한다 그래서 총 13개의 뷰 부터 대충 자리를 잡아주었다 2. Stack View 로 안쪽부터 묶기 위의 두 줄은 Horizontal, 세번째 줄 오른쪽 네개의 뷰들은 Vertical, 세번째 줄 양 옆으로 고르게 배치되므로 Horizontal, 전체적으로 네줄이므로 전체는 Vertical 총 5개의 스택뷰가 필요하다. 스택뷰로 만들고 싶은 UIView 드래그 해서 Stac..
순서 RxSwift ? RxCocoa? Observable & Observer & Subscribe Observable Dispose 1. RxCocoa는 뭘까 ? ~ Cocoa Touch Framework에 Rx를 합친 RxSwift 기반의 라이브러리 ~ RxSwift와 가장 큰 차이점은 RxSwift는 기본적인 데이터 비동기 처리가 가능하다면 RxCocoa는 tableView.rx / button.rx / pickerView.rx 와 같이 각 UI요소의 기능 (ex. tap, selected item 처리 등) 의 비동기 처리를 돕는다는 것 ! 1-1. RxSwift & RxCocoa & 그 외 RxSwift와 RxCocoa 외에도 테이블뷰와 컬렉션뷰 datasource delegate 기능을 좀 더..
UiView를 상속받아 Custom Class를 만들 때 우리는 생성자를 통해 뷰를 구성해야하기 때문에 required init?(coder: NSCoder) override init(frame: CGRect) 이 두 생성자를 만나게 되는데요, 오늘은 이 두 생성자의 차이점과 함께 코드로 뷰를 구성할 때 두 생성자를 모두 호출해야하는 이유에 대해서 정리해보았습니다 required init?(coder: NSCoder) XIB는 XML Interface Builder의 약자로, Xcode 컴파일로는 번역할 수 없습니다 그래서 XIB를 nib으로 변경하여 Xcode 상에서 컴파일 할 수 있도록 만드는 과정이 필요한데요 ~ 여기서 nib을 통해 컴파일하고 해체하는 과정을 unarchiving / deseria..