일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NumberFormatter
- 스타트업주니어로살아남기
- 야곰아카데미
- NotificationCenter
- 독후감
- 독서후기
- 스위프트
- IOS
- Failed to register bundle identifier
- 부트캠프
- Modality
- human interface guidelines
- 아이폰
- @available
- Navigation
- viewcontroller
- Structures and Classes
- 책후기
- xcode
- contentInset
- SWIFTUI
- Mock
- mvvm
- UIResponder
- delegation
- roundingMode
- Codegen
- Info.plist
- SWIFT
- View Life Cycle
- Today
- Total
목록Software Engineering/iOS (76)
호댕의 iOS 개발

iOS 14 이후부터 위젯 기능을 사용할 수 있게 되었다. (물론... 안드로이드에선 진작 있긴 했지만... ) 위 아이패드 화면에서 흰 색 테두리로 표시해놓은 부분이 위젯이다. 이를 통해 사용자에게 앱에서 중요한 내용을 홈 화면에서 상시 노출을 할 수 있는 것이다. 일단 위젯도 AppExtension의 한 종류인 만큼 App Extension에 대해 먼저 알아보자. 🛠 App Extension 🔸 App Extension 추가해보기 이를 통해 홈 화면에 위젯으로 앱을 표시하거나, 액션 시트에 새 버튼을 추가하거나, 사진 앱 내 사진 필터 제공 등의 작업을 수행할 수 있다. 이런 App Extension은 Xcode의 File > New > Target을 누르면 추가를 해줄 수 있다. 이렇게 해주면 이렇..

연락처 앱이나 메모 앱을 켜보면 스와이프 기능이 있는 경우가 있다. 스와이프를 통해 해당 셀을 삭제하거나 공유할 수 있도록 하는 것이다. 이는 굳이 버튼을 누르지 않더라도 직관적으로 스와이프 동작을 통해 원하는 액션을 동작할 수 있도록 할 수 있다. 그렇다면 이런 스와이프 기능을 구현하려면 어떻게 해야할까? 🛠 관련 메서드 이는 UITableViewDelegate에 관련된 메서드를 사용하면 된다. func tableView(_ tableView:leadingSwipeActionsConfigurationForRowAt:) -> UISwipeActionsConfiguration? func tableView(_ tableView:trailingSwipeActionsConfigurationForRowAt:) -..

만약 이런 식으로 TextField나 TextView에 테두리 대신 그림자를 주고 싶다면 어떻게 해야 할까? UIView의 layer에는 다음과 같은 속성들이 있다. shadowColor : 그림자의 색을 정해줄 수 있다. (CGColor) shadowOffset : 그림자가 어디로 얼마나 퍼져있을지를 정해줄 수 있다. 기본값은 (width: 0.0, height: -3.0)이다 (CGSize) shadowOpacity : 그림자의 투명도를 정해줄 수 있다. 0.0에서 1.0의 범위에서 정해줄 수 있으며 기본 값은 0.0이다. shadowRadius : 그림자가 얼마나 둥근지(곡률) 정해줄 수 있다. 하지만 여기서 TextField와 TextView의 차이가 존재한다. 기존에는 layer.masksToB..

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

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