분류 전체보기(190)
-
[Library] AutoLayout을 짧은 코드로 구현하려면, SnapKit
💡 SnapKit이란? iOS 개발에서 UI를 코드로 구현할 때 (AutoLayout을 잡을 때) 편리하게 도와주는 라이브러리이다. 스토리보드나 SwiftUI를 이미 경험해본 사람에게 있어, 코드 베이스로만 UI를 구성한다는 것은 매우 겁나는 일이다. 나도 처음에는 편한 스토리보드, xib 등이 있는데, 굳이 코드로 UI를 짜야하는 이유가 뭐가 있을까? 했는데, 개발을 계속 공부하다 보니 어쩔 수 없이 코드 베이스로 개발을 해야 하는 상황이 생기게 되더라. (협업, 유지 보수의 편리함, 속도 빠름, 파일 가벼움, conflict 발생 가능성이 적다 등의 장점 등등) 그렇다고 무작정 코드로 UI를 짜다보면, 라벨 하나를 넣더라도 코드의 길이가 엄청 길어지는 본인을 목격할 수 있었는데, 이 긴 코드를 조금이..
2021.11.16 -
[UIPickerView] 물레방아 혹은 슬롯머신, UIPickerView 만들기
1️⃣ 오늘 만들어줄 화면은? 흔히, 내가 '도르륵'이라고 부르는 녀석을 만들어줄거다. 이 녀석의 정식 명칭은 UIPickerView이다. 날짜와 시간을 지정할 때는 Apple에서 기본으로 제공해주는 Date Picker를 사용하게 되는데, 안에 들어가는 내용을 직접 커스텀하기 위해서는 그냥 "PickerView"를 사용해야 한다. 사용 방법은 UITableView와 굉장히 유사하기 때문에 아마 쉽게 배울 수 있을거라 생각한다. 일단, 항상 그랬던 것처럼 공식문서부터 읽어보자. ✍🏻 애플 공식문서 보러가기 2️⃣ 기본세팅 여기서는 코드로 추가해줬지만, 스토리보드에 그냥 끌어넣기해도 된다. 일단, 여기서 주목해야될 부분은 2곳인데, 첫 번째, 피커 뷰 안에다가 넣을 내용을 리스트 변수로 선언해서 넣어두는 ..
2021.11.15 -
[Swift] 함수 앞에 private가 붙어 있던 이유, 접근 제어(Access Control)
💡 접근 제어(Access Control)란?특정 코드에 다른 파일과 모듈이 접근할 수 있는 범위를 제한하는 것이다.클래스, 구조체, 열거형, 프로퍼티, 메서드 등 전혀 상관없이 코드 모든 곳에 적용할 수 있고,Swift에서는 총 5가지 접근 수준(Access Level)에 따른 각각의 키워드를 사용해서 적용을 하게 된다.✔️ 객체지향 프로그래밍에서의 캡슐화(Encapsulation), 은닉화(Hiding) 개념이 적용되었다고 보면 된다. 💡 접근 제어가 왜 필요한데?세부적인 코드의 구현 내용을 접근 제한해서 큰 틀에서 재사용할 수 있을 만큼만 공개를 하기 위해서이다.또한, 불필요한 접근이 발생해 예상치 못한 결과를 초래하는 경우를 막거나, 공유하고 싶지 않은 내용을 가리기 위해서 사용한다.(SNS에..
2021.11.08 -
[Xcode] 코드 스니펫(Code Snippet)을 사용하는 방법
💡코드 스니펫(Code Snippet)이란? 오늘 내 머리를 탁(?) 치게 만든 코드 스니펫이란 엄청난 녀석을 알게 되었다. 코드 스니펫이란 코드를 빠르고 효율적으로 작성하기 위해 자주 쓰는 코드를 템플릿으로 저장해 두고 단축어를 이용해 간편하게 코드를 작성할 수 있도록 도와주는 기능이다. 하지만 사실, 이미 우리는 은연중에 코드 스니펫 기능을 사용하고 있었다. 아래 예시를 보자. if를 쓰기만 해도 if - If Statement라는 칸이 아래 표출되고, 이 부분을 클릭하면 오른쪽처럼 자동으로 if 문법에 대한 기본 템플릿이 표출되는 것을 한 번쯤은 경험한 적이 있을 것이다. 만약, 기본적으로 있는 이 템플릿 외에 자주 쓰는 주석, 테이블뷰, 컬렉션뷰 익스텐션을 이렇게 만들어두면 더 편하지 않을까? 그..
2021.11.06 -
[Swift] 타입캐스팅(Type Casting) 완전 정복하기: is? as as? as! 키워드 내용 정리
오늘 다룰 내용은 iOS 개발을 하다가 누구나 쉽게 마주칠 수 있는 is, as, as?, as!이다. 이런 표현을 통틀어서 Swift에서는 "타입 캐스팅(Type Casting)"이라 부르는데, Swift에서 타입 캐스팅은 '해당 인스턴스의 타입이 무엇인지?' 혹은 '해당 인스턴스를 부모 타입 혹은 자식 타입처럼 사용할 수 있는지?'를 처리하기 위해 사용된다. 여기서 결론부터 말하자면, 전자의 내용은 is로, 후자는 as를 사용해 표현하게 될 것이다. 자세한 내용은 아래 글을 따라 계속 읽어보자. 1. is : 해당 인스턴스가 우측의 타입에 해당하는지? 다시 언급하자면, is는 해당 인스턴스의 타입이 무엇인지 즉, "너는 정말 이 타입에 해당하니?"에 대한 대답을 얻고자 할 때 사용된다. (인스턴스) ..
2021.11.06