iOS (115) 썸네일형 리스트형 [iOS] [Swift] setNeedsLayout & layoutIfNeeded setNeedsLayout & layoutIfNeeded 여태 portrait landscape 등 디바이스의 Orientation을 변경하는 등 제약조건에 따른 UI 업데이트를 위해 막연하게만 사용했던 두 메소드에 대하여 한번 알아보도록 하겠습니다. View의 생명 주기중 view layout을 업데이트는 layoutSubViews()가 담당합니다. iOS에서는 앱이 실행되면 메인 스레드에서 Main run loop 가 실행되면서 update 사이클을 통해 이벤트들을 처리하게 됩니다. Update Cycle Update Cycle은 애플리케이션이 유저로부터 받은 이벤트들에 대한 핸들링을 진행한 이후 다시 main run loop로 권한 및 컨트롤을 반환하는 지점입니다. 해당 지점에서 우리의 앱은 Vie.. [iOS] [Swift] Protocol Oriented Programming POP (Protocol - Oriented - Programming) 안녕하세요 오늘은 Swift 언어의 큰 특징 중 하나인 POP 에 대하여 알아보겠습니다. 프로토콜 지향 프로그래밍 (Protocol - Oriented - Programming) Swift 언어를 공부하다보면 관련 문서 혹은 서적에서 한번쯤은 접했던 POP가 과연 무엇일까요? 객체 지향 프로그래밍 패러다임에 기반을 둔 언어들은 클래스의 상속 을 사용하여 해당 타입이 가질 공통적인 기능들을 모듈화하여 구현합니다. Swift에서는 대표적으로 UIViewController가 클래스 타입으로 정의되어 있죠. UIViewController 가 클래스로 정의되어 있기에 모든 ViewController에서 행할 수 있는 행동들을 공통적으로 갖게되.. [iOS] RxSwift를 이용한 Login 기능 구현 RxSwift를 이용한 Login 기능 구현 이번에는 RxSwift 와 RxCocoa 를 이용하여 간단한 Login 프로세스를 구현해보도록 하겠습니다. Layout 이번에 만들어 볼 앱의 레이아웃은 위 사진과 같습니다. 간단히 Email과 Password를 입력받기 위한 TextField 와 로그인 진행을 위한 Button을 하나 생성하였습니다. ViewModel View를 위해 ViewModel이 제공해야 하는 프로퍼티와 기능에 대하여 먼저 정의하겠습니다. Input 과 Output 을 나눠서 살펴보면 아래와 같이 정리할 수 있습니다. Input emailTextField: BehaviorRelay pwTextField: BehaviorRelay Output emailText 값과 pwText값의 유효.. [iOS] [Swift] Convenince init convenience init Swift에서 이용되는 init은 다른 언어에서의 init과 같이 동일하게 생성자 역할을 하며 designated init 과 convenience init으로 나뉘어진다. 우리가 일반적으로 쓰는 init() 이 designated init이다. designated init은 반드시 1개는 있어야 하고, convenience init은 말 그대로 보다 유연하고 간편하게 쓰려고 만드는 생성자다. class Person { var name: String var age: Int var height: Int var weight: Int init(name: String, age: Int, height: Int, weight: Int) { self.name = name self.age.. [iOS] RxSwift 시작하기 RxSwift 시작하기 앞서 RxSwift에 대하여 간단히 알아보고 개념을 익혔다. 이제 본격적으로 RxSwift를 공부하며 사용해보도록 한다. 비동기 프로그래밍(Asynchronous Programming) 일반적인 Class에서는 비동기 작업을 수행하고 이에 따른 모든 UI 구성을 기본적으로 비동기로 처리하기 때문에 코드가 어떠한 흐름으로 진행될 지 예측하는 것이 어렵다. 뿐 만 아니라, 코드는 사용자의 입력 혹은 네트워킹 환경 등 다양한 외부 요인에 의하여 다르게 실행된다. Apple은 이러한 비동기에 대응하기 위해 아래와 같은 다양한 기능들을 제공하고 있다. NotificationCenter : 특정 이벤트가 발생할 경우에 진행할 코드를 작성해놓고 해당 이벤트가 발생하면 코드를 진행시키는 방법. .. [iOS] KingFisher 소개 KingFisher KingFisher 소개 KingFisher 는 iOS에서 이미지를 간편하게 관리할 수 있도록 기능을 제공하는 오픈소스 라이브러리다. 물론 Alamofire 혹은 URLSession 등을 이용해 네트워킹을 통하여 이미지를 다운로드한 뒤 이를 다룰 수 있다. 하지만, 많은 양의 이미지 데이터가 필요한 경우 혹은 큰 용량의 이미지들을 다뤄야 하는 경우에는 앱 성능에 심각한 영향을 줄 수 있으므로 이러한 상황에 보다 효율적으로 대처하기 위해 여러가지 추가 작업이 필요하고 네트워킹 작업이 필요한 부분은 비동기 처리를 진행해줘야 한다. 이러한 번거로운(?) 작업들을 위해 KingFisher는 아래 기능들을 제공한다. 비동기 이미지 다운로드 및 캐싱 URLSession 기반 네트워킹 메모리와 디.. [iOS] [Swift] RxSwift 공부 및 정리 RxSwift 본 문서에는 RxSwift 공부 내용을 기재한다. RX : ReactiveX RX는 ReactiveX의 준말이다. ReactiveX Official 에 들어가면 observable 한 스트림을 가지고 비동기 프로그래밍을 구현하기 위한 API를 제공한다고 되어있다. Sync & Async Rx는 비동기 프로그래밍을 위한 API 라고 앞서 확인하였다. 그렇다면 과연 동기는 무엇이고 비동기는 무엇인지 각각의 방법에 어떠한 장단점이 있는지 간단히 살펴보고 넘어가도록 하자. 동기(Synchronous) 동기란 말 그대로 통신에서의 요청과 그에 대한 결과가 동시에 일어난다는 의미이다. 즉 요청을 하면 시간이 얼마가 걸리든 요청한 자리에서 결과가 주어져야 한다. 요청(request) 과 결과(respo.. [iOS] Passing Data Between View Controllers Pass Data between View Controllers in swift 본 문서에는 View Controller 간 화면 전환시 데이터를 전달하는 방법에 대한 내용을 기재한다. iOS 앱 개발에서 View Controller 간 데이터 전달은 매우 중요하다. Passing Data Between View Controllers with properties 첫번째는 프로퍼티를 이용한 데이터 전달방법이다. 프로퍼티란 클래스 내 변수로서 클래스의 모든 인스턴스가 해당 프로퍼티를 가지며 이에 값을 할당하고 사용할 수 있다. UIVIewController 타입의 View Controller는 당연히 클래스의 인스턴스이므로 프로퍼티를 가질 수 있다. class MainViewController: UIViewC.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음 목록 더보기