분류 전체보기(209)
-
[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 -
[Library] AutoLayout을 짧은 코드로 구현하려면, SnapKit
💡 SnapKit이란? iOS 개발에서 UI를 코드로 구현할 때 (AutoLayout을 잡을 때) 편리하게 도와주는 라이브러리이다. 스토리보드나 SwiftUI를 이미 경험해본 사람에게 있어, 코드 베이스로만 UI를 구성한다는 것은 매우 겁나는 일이다. 나도 처음에는 편한 스토리보드, xib 등이 있는데, 굳이 코드로 UI를 짜야하는 이유가 뭐가 있을까? 했는데, 개발을 계속 공부하다 보니 어쩔 수 없이 코드 베이스로 개발을 해야 하는 상황이 생기게 되더라. (협업, 유지 보수의 편리함, 속도 빠름, 파일 가벼움, conflict 발생 가능성이 적다 등의 장점 등등) 그렇다고 무작정 코드로 UI를 짜다보면, 라벨 하나를 넣더라도 코드의 길이가 엄청 길어지는 본인을 목격할 수 있었는데, 이 긴 코드를 조금이..
2021.11.16