본문 바로가기

MOBILE

(49)
[iOS] SnapKit을 사용하여 AutoLayout constraint 설정하기 AutoLayout을 사용하여 쉽게 view 객체들 간의 constraint를 설정하는 라이브러리를 알아보자 실제로 인턴 다니는 회사에서 사용하는 라이브러리인데, 처음 접해보고 진짜 너무 편하고 좋아서 사이드 프로젝트에도 적용하고 있음.. 1. SnapKit 공식 문서 snapkit은 cocoapod을 통해 설치 가능하다. GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com 깃허브를 방문하면 자세한 정보들을 얻을 수 있고..
[iOS] UIKit 알림창 UIAlertController customizing 하기 UIKit에서 알림창을 띄우는 객체는 UIAlertController이다. 경고창과 액션 시트 두 가지를 모두 구현 가능하며 다음과 같이 구현할 수 있다. 1. Alert 구현 let alert = UIAlertController(title: "Alert", message: "Alert창 입니다.", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) self.present(alert, animated: true); 위와 같이 알림창의 버튼은 UIAlertAction 객체이며 이 객체를 addAction 메소드를 사용하여 UIAlertController 객체에 추가해줘야 한다. 2..
[iOS] GCD의 기본: DispatchQueue의 종류와 특성 지난 번에는 GCD가 무엇인지 기본을 알아보았다. [iOS] GCD의 기본: sync, async, serial, concurrent ios multi-threading ios에서 멀티 스레딩을 지원하는 방식은 Thread, OperationQueue, GCD 이다. 이 중에서 Thread는 복잡하고 critical section을 막기 위한 lock, semaphore 등의 동기화 기법을 개발자가 직접.. josushell.tistory.com 이번에는 ios에서 제공하는 queue의 종류와 각각의 특성에 대해 알아보자. 위의 포스팅을 읽고 오는 것은 많은 도움이 된다. DispatchQueue 앱의 main thread 또는 background thread에서 serial, concurrent 하게 ..
[iOS] GCD의 기본: sync, async, serial, concurrent ios multi-threading ios에서 멀티 스레딩을 지원하는 방식은 Thread, OperationQueue, GCD 이다. 이 중에서 Thread는 복잡하고 critical section을 막기 위한 lock, semaphore 등의 동기화 기법을 개발자가 직접 관리해야 한다는 어려움이 있다. 또한 OperationQueue는 무겁고 필요한 코드가 많다는 단점이 있다. 이렇게 멀티 스레딩의 어려움을 운영체제 레벨로 넘겨서 개발자는 그저 멀티 스레딩을 하고자 하는 "의지"만 보여주면 되는 방식이 있다. 그것이 바로 Grand Centeral Dispatch, GCD 이다. GCD(Grand Central Dispatch)라고도 하는 Dispatch에는 macOS, iOS, watchOS 및 tv..
[iOS] RxSwift와 Observable, operator 도대체 RxSwift는 무엇인가? RxSwift가 무엇인지 알려면 Reactive X가 무엇인지부터 알아야 한다. Reactive X의 공식 홈페이지를 보면 대문짝만하게 다음 설명이 나와있다. observable steams를 이용한 비동기 프로그래밍을 위한 API 라고 소개하고 있다. 이 문장으로 Reactive X는 비동기 프로그래밍을 위한 API라는 것까지는 알게 되었다. 하지만? observable? stream? 뭔소린지 도대체 알 수가 없다. 이 무수한 갈고리핑을 해결하기 위해 일단 웹 사이트에서 제공해주는 공식 문서들을 살펴보자. Reactive X 웹 사이트에 있는 문서들을 번역하도록 하겠다! 하지만 번역기를 거치지 않고 직접 하고 있다는 점에 유의 바란다. Introduction Reac..
[iOS] side bar 라이브러리 없이 직접 구현하기 앱에서 정보를 숨기지만 접근하기 쉽게 만드는 UI는 무엇일까? 바로 side bar이다. 정보를 어느 정도 숨겨주지만 side bar를 터치하여 누르면 다양한 정보와 기능이 나타나도록 구현할 수 있어서 자주 사용된다. 이러한 side bar는 제공해주는 UI 요소가 아니기 때문에 직접 구현해야 한다. 다행히 많은 라이브러리들이 있지만 직접 sidebar 를 구현해보도록 하자. Custom Container View Controller container view controller는 다른 view controller와 달리 실질적인 화면, 자식 뷰 컨트롤러를 관리하는 역할만 한다. 예를 들어 tab bar controller, navigation view controller, page view contro..
[iOS] UNUserNotificationCenterDelegate 로 보낸 로컬 알람 처리하기 지난 포스팅에서는 UNUserNotification 객체를 사용하여 로컬 알람을 보내는 방법을 알아보았다. [iOS] UserNotification으로 로컬 알림 사용하기 로컬 알림은 앱 내부의 메세지를 사용자에게 전달할 때 ios의 알림 센터를 거치도록 하여 전달하는 방식으로 이루어진다. 즉 앱이 종료되어 있거나 백그라운드 상태에서도 사용자 알림을 보낼 josushell.tistory.com 로컬 알림은 잘 활용하면 사용자에게 아주 좋은 효과를 줄 수 있다는 점에서 유용하다. 하지만 로컬 알림이 알림에서 그치지 않고 사용자 액션으로 이어질 수 있도록 하기 위해서는 어떻게 해야할까? 예를 들면, 카카오톡은 상단바 알림에서도 메세지를 보낼 수 있다. 또는 알림을 터치하면 그 카카오톡방으로 들어가게 된다. ..
[iOS] UserNotification으로 로컬 알림 사용하기 로컬 알림은 앱 내부의 메세지를 사용자에게 전달할 때 ios의 알림 센터를 거치도록 하여 전달하는 방식으로 이루어진다. 즉 앱이 종료되어 있거나 백그라운드 상태에서도 사용자 알림을 보낼 수 있다는 장점이 있다. 로컬 알림은 ios scheduler에 의해 발송된다. 앱 내부에서 미리 메세지를 구현하고, 이를 ios scheduler에 보내고자 하는 시각으로 등록해두면 자동으로 발송된다. 이때 scheduler에 등록된 이후로는 Ios가 모든 발송을 관리하기 때문에 앱 내부에서는 할 일이 없다. 따라서 로컬 알림의 대부분은 AppDelegate class에서 작업이 이루어진다. (life cycle method와 함께 쓰일 때가 많음) ios 10 이상부터는 UserNotification 객체를 사용하고,..