일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- roundingMode
- IOS
- viewcontroller
- 독서후기
- mvvm
- @available
- Modality
- 부트캠프
- SWIFTUI
- 야곰아카데미
- xcode
- Mock
- 스타트업주니어로살아남기
- Info.plist
- NumberFormatter
- 책후기
- human interface guidelines
- 독후감
- 아이폰
- contentInset
- 스위프트
- SWIFT
- Codegen
- UIResponder
- Navigation
- NotificationCenter
- Structures and Classes
- Failed to register bundle identifier
- delegation
- View Life Cycle
- Today
- Total
목록분류 전체보기 (144)
호댕의 iOS 개발

물론 나도 다양한 라이브러리를 사용해보진 못했지만 이번에 야곰 아카데미에서 프로젝트를 진행하며 어떤 라이브러리를 선택할 지 고민할 수 있는 기회가 있었다. 써보지도 않은 라이브러리.. 어떻게 판단할 수 있을까? 자기가 좋은 라이브러리라고 딱 보이지도 않는데 말이다. 라이브러리를 한 번 쓰고 말 것이 아닌 만큼 해당 라이브러리가 안정적으로 운용이 될 것인지, 미래에도 지속적으로 사용될 것인지에 대해 판단해야 한다. (물론 자기 프로젝트에 적합한 라이브러리인지 파악하는 것이 가장 중요할 것이다) 특히 라이브러리에 맞춰 코드를 작성하다보면 이후 해당 라이브러리를 사용하지 않을 경우 리팩토링이 까다로울 수 있기 때문에 처음부터 신중히 고민을 하고 선택을 할 필요가 있다. 1️⃣ Github Star 확인하기 일..

😱 문제 상황 TextView나 셀이 아닌 부분을 터치하면 키보드가 내려가도록 구현하려고 TapGestureRecognizer를 등록하여 키보드가 내려가도록 했다. 하지만 이렇게 하니 다른 터치 이벤트가 전달이 안되어 터치가 필요한 곳도 터치를 인식하지 못하고 키보드만 꺼지는 문제가 있었다. 그래서 발견한 해결책!!을 말하기 전에 Gesture Recognizer에 대해 좀 더 알아보자. 🔭 UIGestureRecognizer Gesture Recognizer를 사용하게 되면 터치 이벤트를 전달하기 전에 Gesture Recognizer에 터치 이벤트를 전달하게 된다. 또한 Gesture Recognizer가 제스처를 인식하게 되면 나머지 터치는 모두 취소되게 된다. 즉 위 문제 상황에서도 다른 터치들이..

📖 UserNotifications는 뭘까? 일단 User Notification이 뭔지 살펴보자. 위 그림처럼 카톡이나, 유튜브, 메일 등에서 알림을 받아본 적이 있을 것이다. User Notification이 바로 저 알림을 의미한다. 사용자에게 알림을 보내 사용자가 디바이스를 사용 중이든, 아니든 앱 사용자에게 중요한 정보를 전달하게 된다. 또한 이를 탭하여 인터페이스를 업데이트하고 앱에서 특정 작업을 할 수 있도록 구현할 수도 있다. 그렇다면 UserNotifications 프레임워크는 무슨 일을 할까? 앱이 지원하는 알림의 유형을 결정한다. (.alert, .sound, .badge) 알림의 유형과 관련된 커스텀한 액션을 정의한다. 알림의 전달을 위해 위치 관련 알림을 예약한다. 이미 전달된 알..

DateFormatter를 사용할 때 locale과 timeZone을 선택할 수 있다. 즉 시간대와 지역을 어디로 설정할 지 정할 수 있는 것이다. 여기서는 두 가지 옵션이 존재한다. 바로 .autoupdatingCurrent와 .current이다. 둘 다 현재의 시간을 선택해주는 것 같은데 이 둘의 명확한 차이를 알 수 없었다. 공식문서에는 어떻게 이 둘을 설명하고 있을까? 🔶 .autoupdatingCurrent locale에선 다음과 같이 설명하고 있다. A locale which tracks the user’s current preferences. timeZone에선 다음과 같이 설명하고 있다. The time zone currently used by the system, automatically..

SwiftUI의 경우 관련된 대부분의 요소가 프로토콜과 구조체로 구성되어 있다. View를 만들 때 사용하는 View라는 프로퍼티도 프로토콜로 되어 있고 이를 통해 View를 정의할 때에도 대부분 구조체를 사용하게 된다. 👥 UIKit과 SwiftUI의 차이점 UIKit을 사용할 때는 대부분 이런 것들이 Class로 구현되어 있으며 사용할 때 차이점이 존재하게 된다. 1️⃣ Event-Driven VS Data-Driven UIKit의 경우 View 스스로 자신이 어떻게 변화할지 알 수 없다. 만약 특정 뷰의 색을 바꾼다고 생각했을 때 대개 이런 과정을 거칠 것이다. UIView, 버튼 객체를 만든다. 코드로 만든 경우 addSubView를 통해 View에 올린다. 버튼에서 UIView의 색이 바뀌는 로..

연락처 앱이나 리스트가 존재하는 다양한 앱을 사용하다 보면 검색을 통해 해당 검색 요건을 충족하는 것들만 보여주는 기능을 자주 접하게 된다. 바로 아래 그림처럼 말이다. 이런 것들은 어떻게 구현하는 것일까??? 이미 애플은 이런 검색 기능을 구현할 수 있도록 Class를 만들어놓았다. 그 이름은 바로 UISearchController !! 이름이 상당히 직관적이다. 그렇다면 UISearchController는 어떻게 사용할 수 있을까? 1️⃣ UISeachController 초기화하기 일단 DateFormatter 같은 것들을 사용할 때처럼 Initialize를 해줘야 한다. private let searchController = UISearchController() 초기화를 해줄 때 Initialize..

View Drawing Cycle 필요에 의해 발생하며, 뷰가 처음 그려지거나 레이아웃이 변하게 되면 그리게 된다. 참고로 CumtomView의 경우 다른 뷰 위에 뷰를 얹는 것을 의미하는 것이 아니다. 실질적으로 draw(rect:) 메서드를 override하여 graphic context 위에 그리는 것을 의미한다. 그러면 언제 View의 컨텐츠 변경을 위해 업데이트 트리거가 동작하는 것일까? 1. View를 부분적으로 가린 다른 View의 이동 및 제거 2. Hidden으로 되어있던 View의 노출 3. 화면을 스크롤할 때 4. 명시적으로 setNeedsDisplay 같은 메서드를 호출할 때 그렇다면 View와 Layout을 업데이트해주는 메서드에 대해 좀 더 자세하게 알아보자. setNeedsDi..
DateFormatter의 비용이 크다는 피드백을 받게 됐다. 사실 DateFormatter를 사용하면서 크게 고려하지 않던 부분이었는데 이번 계기로 찾아보게 됐다. 그래서 다음과 같은 참고 자료들을 찾을 수 있었다. https://sarunw.com/posts/how-expensive-is-dateformatter/ How expensive is DateFormatter | Sarunw If you are working on iOS for long enough, there is a chance that you might have known that DateFormatter is expensive, but what is costly about DateFormatter? Let's find out in t..