분류 전체보기(190)
-
[Library] Alamofire의 단점을 보완한 네트워킹 라이브러리, Moya
1️⃣ Moya? 보통 iOS에서 네트워킹을 구현할 때는 URLSession을 사용하게 된다. 그리고 그 URLSession을 이용한 네트워킹을 조금 더 간편하기 위해, 앞에서도 다룬 적이 있는 Alamofire 라이브러리를 보편적으로 사용하곤 했다. 하지만, 이 Alamofire 라이브러리는 코드의 유지보수와 유닛 테스트(각 부분마다 정확하게 동작하는지 확인하는 절차 -> 모든 함수 단위단위마다 로그를 찍어볼 수 없으니)가 힘들다는 단점이 있었다. 그래서 등장한 것이 바로 이 Moya 라이브러리이다. Moya는 URLSession을 추상화한 Alamofire를, 다시 추상화한 라이브러리로 Network Layer를 템플릿 화해서 재사용성을 높이고, 개발자가 request, response에만 집중을 하..
2021.12.17 -
[UITapGestureRecognizer] UILabel을 클릭가능하도록 만들기
원래 액션 이벤트를 담당하는 UI 요소는 "버튼"이다. 하지만 iOS 개발을 하다 보면, 경우에 따라 일반 뷰에나 이미지 뷰, 라벨에도 버튼을 구현해야 할 때가 생기게 된다. 오늘은 이럴 경우에, 버튼이 아닌 요소에도 Action을 어떻게 표현할 수 있는지 알아보려 한다. (코드에서는 UILabel을 예시로 들지만, 요소를 다른 걸로 바꿔주기만 하면 모두 응용해서 사용 가능하다.) 전체적인 기능 구현에 대한 프로세스는 아래와 같다. 1️⃣ Action을 주고 싶은 요소에 대해 Outlet을 만든다. 2️⃣ UITapGestureRecognizer를 이용해 클릭을 인식할 수 있도록 만든다. 3️⃣ 클릭했을 때, 구현할 코드를 함수에 작성한다. 4️⃣ isUserInteractionEnabled를 true로..
2021.12.17 -
[iOS] iOS 앱 다크모드 대응기: 시스템을 무시하고 앱 자체적으로 다크모드를 적용하기
0️⃣ 다크모드 대응기를 쓰기에 앞서 오늘은 거의 2주일 간 혼자 낑낑했던 앱의 다크 모드 대응기를 정리해보겠다. 애플은 매년 신규 아이폰을 출시함과 동시에 신규 아이폰에 탑재되는 운영체제 iOS의 새로운 버전을 공개한다. (사실 더 정확하게 말하면, 아이폰 출시보다 먼저 WWDC에서 개발자들을 상대로 공개행사를 진행한다 ^_^) 2019년 배포된 iOS 13에서의 큰 변화는 "다크 모드"의 지원이었다. 다크 모드는 사용자가 어두운 환경에 있는 경우를 대비하여, 눈의 부담을 덜어주고 아이폰 디스플레이 자체의 부담도 덜어주는 (다른 곳에서는 진작에 지원을 시작한) 기능이다. 사실, 앱에서 다크모드를 적용한다고 했을 때, 가장 보편적으로 사용하는 방법은 색상과 이미지 정도에서 각 모드에 따른 대응을 해둔 상..
2021.12.17 -
[Foundation] UserDefaults를 사용해서 데이터를 전달하는 방법
iOS에서는 ViewController 간 데이터를 전달하는 방식을 크게 2가지로 나눌 수 있다. 데이터를 직접 전달하는 직접 전달(동기) 방식과, 데이터를 저장하고 필요할 때 꺼내오는 방식인 간접 전달(비동기) 방식으로 나누어진다. 오늘은 이 두 방식 중에서, 필요할 때 값을 꺼내올 수 있도록 쓸 수 있는 비동기 방식 중, UserDefaults라는 것을 사용하는 방법에 대해 공부를 해보려고 한다. UserDefaults란 iOS 프로젝트 내에 있는 데이터 저장소라고 이해하면 된다. 기본 프로젝트 폴더를 보면 info.plist라는 파일이 있는 것을 확인할 수 있는데, UserDefaults도 plist처럼 Key-Value 형태로 값을 저장하고 꺼내올 수 있는 것이 특징이다. UserDefaults ..
2021.12.17 -
[Xcode] 코드에서 이미지와 색상을 보는 방법, ImageLiteral, ColorLiteral
1️⃣ Intro오늘은 ImageLiteral과 ColorLiteral 기능에 대해 다뤄볼 거다.Literal은 "문자 그대로의", "정확한"이라는 뜻을 갖고 있다.그렇다면, ImageLiteral은 "정확한 이미지" 정도의 뜻을, ColorLiteral "정확한 색상" 정도의 뜻으로 해석을 하면 되는데,과연 이게 iOS 개발에서는 어떻게 쓰이는 기능일까?아래 글을 통해 알아가 보도록 하자. 2️⃣ ImageLiteral, ColorLiteral이란?원래 코드에서 컬러나 이미지를 지정할 일이 생기면, 아래와 같이 보통 코드를 작성했을 거다.코드 이름을 일일이 써주는 것도 귀찮고,이게 그래서 어떤 색상인지, 어떤 이미지인지 파악하기도 어려웠던 적이 있지 않은가?ImageLiteral, ColorLitera..
2021.11.16