[iOS] JeongLogger SPM 라이브러리 생성과 배포
·
iOS/개념 & 개발
라이브러리 준비 라이브러리를 직접 만들고, SPM을 직접 배포해 봅시다. 라이브러리는 모든 프로젝트에서 사용되는 Log 기능으로 만들어볼건데요. 이에 몇 가지 주의점이 있습니다. 혹시 라이브러리 클래스에 고유한 단어를 붙이는 이유가 뭔지 아시나요? 예를 들면, Kingfisher는 "kf"라는 글자처럼요. 이런 글자를 붙이는 이유는 라이브러리 사용자가 사용하는 이름과 중복되는 것을 피하기 위해서 입니다. 같은 이름의 클래스가 있으면 안 된다는 것은 대부분 아실거에요. 그 규칙이 라이브러리의 클래스에도 적용되기 때문에 kf같은 특수한 단어를 붙이는 겁니다. (클래스 뿐만 아니라 이름이 겹치면 안 되는 모든 것에 적용되는 얘기입니다.) 따라서 이번 Logger 라이브러리 이름을 JeongLogger로 만들고..
[iOS] Combine 준비하기
·
iOS/개념 & 개발
Combine 준비 TLDR은 처음으로 MVVM을 도입한 프로젝트입니다. 바로 Combine을 도입하진 않았고, 프로퍼티 옵저버인 didSet을 이용해 데이터 바인딩을 구현했습니다. 이제 Combine을 학습해서 도입하고자, 정리하는 포스팅을 한 번 작성하려고 합니다 ㅎㅎ Observable 먼저 기존 Observable에 대해 알아봅시다. Observable 모델은 아래처럼 구현되어 있습니다. final class Observable { typealias Listener = (T) -> Void var listener: Listener? var value: T { didSet { listener?(value) } } init(_ value: T) { self.value = value } func bin..
[iOS] Apple 개발자 프로그램(멤버십) 등록시 주의할 점
·
iOS/개념 & 개발
서론 오랜만에 포스팅을 작성하네요. 최근에 최종 탈락으로 인한 심신미약과 졸업 준비로 인해 글을 쓰기가 힘들었습니다 ㅎㅎ; 아무튼, Apple 개발자 프로그램을 갱신하라는 메일이 왔습니다. 애플에게 1년에 한 번씩 친구비를 내는 날이죠. 이 과정에서 발생했던 문제와 Apple 개발자 프로그램을 등록할 때 주의할 점에 대해 알아봅시다. Apple 개발자 프로그램도 구독 결제가 가능하다. 먼저 Apple 개발자 프로그램은 구독이 불가능하다고 알고 계시는 분들이 계실텐데요. Apple 개발자 프로그램도 자동 구독 결제가 가능합니다. 바로 Apple Developer 앱을 이용하는 것이죠. 이 앱에서 계정에 로그인한 후 들어가면 멤버십을 결제하고 구독할 수 있습니다. 매번 카드 결제를 직접 하지 않아도 자동으로..
[iOS] UserDefaults / CoreData / Realm 간단 비교
·
iOS/개념 & 개발
서론 UserDefaults, CoreData, Realm은 iOS의 대표적인 데이터 저장 방식입니다. 저는 지금까지 진행한 프로젝트에서는 UserDefaults만 사용했었습니다. 많은 데이터를 저장할 필요가 없기 때문이었는데요. 추후 데이터 저장이 필요한 상황에서 기술 선택을 용이하게 하기 위해 비교 글을 포스팅하기로 했습니다. 각각 어떤 특징이 있는지 알아야 필요한 기술이 뭔지 정확히 알 수 있겠죠?? 장단점을 비교하는 것이 주 목적이기 때문에 깊은 내용까진 다루지 않습니다. UserDefaults 먼저 UserDefaults입니다. UserDefaults는 포스팅으로 다룬 적이 있는데요. ([Swift] UserDefaults 알아보기) UserDefaults는 데이터 저장을 위한 가장 기초적인 방..
[iOS] 화면 방향에 따라 다른 레이아웃 적용하기 - viewWillTransition
·
iOS/개념 & 개발
화면 방향에 따라 다른 레이아웃 적용하기 세로 레이아웃과 가로 레이아웃이 다른 앱을 쉽게 볼 수 있습니다. 대표적인 기본 앱은 계산기가 있죠. 스마트폰을 가로로 회전시키면 세로 레이아웃에 View가 추가된 레이아웃으로 변경됩니다. 스마트폰만 지원한다면 "세로로 고정시키면 되지 않나?"라고 생각할 수 있지만, 아이패드까지 지원한다면 화면 방향에 따라 적절한 레이아웃을 고려하는 것이 사용자 경험을 증가시킬 수 있습니다. 생각해보세요! 계산기 앱에서 가로 방향에서만 나오는 여러 수식 버튼들이 세로 방향에서도 나오고, 그 영향으로 버튼이 콩알만 해지면 훨씬 불편해지겠죠?? (여러 수식들로 멀미가 나는건 덤..) viewWillTransition(to:with:) 이럴 때 사용할 수 있는 메서드가 viewWill..
[iOS] 스토리보드 분리 - 스토리보드 레퍼런스(Storyboard Reference)
·
iOS/개념 & 개발
스토리보드 스토리보드는 장점과 단점이 명확한 UI 개발 방법입니다. 스토리보드는 아래와 같은 장점을 가집니다. ViewController 간 이동을 한 눈에 볼 수 있음 ViewController의 모습을 시각적으로 표현해줘서 이해하기 쉬움 View를 드래그 & 드랍으로 편하게 생성할 수 있음 단점은 이렇습니다. Git Merge 시 스토리보드에서 충돌(conflict)이 발생함 스토리보드가 여러 개가 되면 파일을 여는 속도가 느려짐 이러한 단점을 해결하기 위해 스토리보드를 사용하지 않고 100% 코드로 구현하거나, 스토리보드 레퍼런스를 이용해 스토리보드를 화면 별로 분리해서 관리합니다. 저는 코드로 UI를 작성하는 것을 선호하는데요. 알고 안 쓰는 것과 몰라서 못 쓰는건 아예 다르니, 오늘은 스토리보드..
[iOS] UITextView 원하는 문자에만 색상 넣기(여러 개도 OK)
·
iOS/개념 & 개발
기능 설명 UITextView의 텍스트에 색상을 넣어야 하는 작업을 해야 했습니다. 모든 글자가 아니라 특정 키워드에만 색상을 적용하는건데요. 이 키워드는 여러 개가 될고 텍스트에 키워드가 여러 번 나올 수 있습니다. 예를 하나 들어봅시다. UITextView에 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세 ... 텍스트가 들어있다고 합시다. 색상을 바꿔야 하는 키워드는 "동해물", "백두산", "하느님" 이라고 할 때, 이렇게 되어야 하는거죠. 기존 코드의 문제 인터넷에 떠도는 코드로 시도를 해보았습니다. l..
[iOS] Generic을 이용한 loadView( ) 코드 최적화
·
iOS/개념 & 개발
문제 상황 저는 ViewController 파일과 화면 view 세팅 파일을 분리했습니다. loadView( )를 오버라이딩해서 view를 교체해줬어요. 아래는 HomeViewController의 view를 커스텀 뷰인 HomeView로 교체하는 코드입니다. override func loadView() { super.loadView() homeView = HomeView(frame: self.view.frame) self.view = homeView } 문제 1 불필요한 view를 생성합니다. super.loadView( )에서 기존 view가 생성되고 있었습니다. 어차피 제가 만든 Custom view로 바로 교체하기 때문에 기존 view는 생성하지 않아도 되는 것이죠. 문제 2 위 코드는 모든 Vie..
[iOS] flashMode와 torchMode 차이점
·
iOS/개념 & 개발
손전등 기능 작은 토이 프로젝트를 진행하면서 손전등 기능을 만들게 되었습니다. AVCaptureDevice를 조작하여 아이폰의 손전등을 켜야하는데요. torchMode와 flashMode의 차이점이 궁금해져서 찾아봤습니다. 자세한 설명 글은 아니고 간단 차이점 소개 글이에요 ㅎㅎ 저처럼 궁금해하시는 분이 있을...수도 있을 거 같아서요! Torch가 손전등 결론은 Torch가 손전등 기능입니다. 후래시 좀 켜봐! 라고 자주 말해서 혼동을 했는데요. 횃불의 의미인 Torch가 손전등을 조작할 수 있는 프로퍼티입니다. Torch의 조작은 AVCaptureDevice의 torchMode를 수정하면 됩니다. captureDevice.torchMode = toggleTorch ? .on : .off on 으로 설..
[iOS] viewWillLayoutSubviews와 viewDidLayoutSubviews
·
iOS/개념 & 개발
선행 내용 아래 포스팅을 먼저 보고 오시면 좋습니다 ViewController의 Lifecycle을 다룬 내용입니다. [iOS] UIViewController 생명주기(Life Cycle) 알아보기 안녕하세요. 개발하는 정주입니다. 오늘은 "UIViewController 생명주기(Life Cycle)"에 대해 알아보겠습니다. 마지막에는 프로젝트를 생성해 생명주기 메서드 호출을 알아보겠습니다. 생명주기 흐름 jeong9216.tistory.com Layout 관련된 생명 주기 viewWillAppear()와 viewDidAppear() 사이에 레이아웃이 결정되기 전, 후의 생명 주기 메서드가 있습니다. 바로 viewWillLayoutSubviews()와 viewDidLayoutSubview() 입니다. 뷰..
유정주
'iOS/개념 & 개발' 카테고리의 글 목록 (3 Page)