- 야곰아카데미
- WWDC
- GOF
- Human Interface Guidelines
- UIKit
- lineBreakStrategy
- UILabel
- TOSS
- orthogonalScrollingBehavior
- IOS
- 애플
- Keychain
- Swift
- DiffableDataSource
- lineBreakMode
- github
- LanguageGuide
- 스위프트
- 애플사이다
- Combine+UIKit
- 디자인패턴
- iTerm
- iPad
- Apple
- Accessibility
- HIG
- 전달인자 레이블
- Split View
- 앱개발
- CollectionView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Today
- Total
목록iOS (37)
애플사이다의 iOS 개발 일지
서비스에서 진행 중인 굵직한 이벤트가 있다면 앱을 실행하고 Home 화면에 진입했을 때, 애니메이션과 함께 Bottom Sheet (이하 바텀시트)를 띄워준다. 바텀시트를 노출하는 앱은 매우 흔하다. dim 영역이나 x 버튼을 탭하면 Sheet가 내려가도록 구현되어 있다. 29CM 무신사 ABLY 오늘의집 Shein 쿠팡 개인적으로 귀찮아서 습관적으로 무조건 닫기 버튼을 누르긴 하지만... ㅋㅋㅋ (솔직히 사용성 너무 안 좋다고 생각함) 그래서인지 아마존, Etsy, Temu 같은 글로벌 앱에서는 이러한 시트를 띄우지 않고 있었다. 아무튼 이번에는 이러한 바텀시트를 구현하는 과정에서 겪었던 버그를 파헤쳐보려 한다. 제목에서 벌써 스포하고 있듯이 ViewDidLoad 시점에 Bottom Sheet의 lay..
지난번에는 RxSwift와 Combine을 비교하고, 5가지 중요한 개념인 Publishers, Operators, Subscribers, Subscriptions, Cancellable을 간단히 알아봤다. 지난 포스팅 [Combine] 기본 원리 - Apple이 만든 RxSwift를 이해해 보자 (1/3)을 참고 계속해서 Combine 기본 원리를 알아보자. 이번에는 Publisher / Subscriber / Cancellable Protocol의 개념과 Subscription 메커니즘을 자세히 살펴봤다. 1. Publisher Protocol AnyPublisher를 이해하려면, Publisher Protocol을 알아야 한다. Publisher는 이벤트를 방출 (publish) 한다. 기존의 No..
최근 RxSwift를 Combine으로 전환하면서 Combine의 원리에 대해 자세히 알아봤다. Combine 공식문서와 Kodeco의 Combine 자료가 큰 도움이 되었다. 개인적으로 Combine+UIKit 조합은 좋지 않은지, 꼭 SwiftUI와 함께 써야 하는지 궁금했다. 결론적으로 Combine이 first-party라서 더 안전하고, 성능이 좋기 때문에 그리고 UIKit에서 사용할 수 있는 API가 많이 나왔기 때문에 (assign 등등) Combine+UIKit 조합도 괜찮다!! 라는 답을 얻었다. Combine은 비동기 처리를 쉽게 해주는 도구이므로 네트워크 layer, 새로 구현하는 화면 등 프로젝트 일부에만 사용해도 괜찮으니 여러 시도를 해보는 게 좋은 것 같다. Combine+UIK..
앱으로 쇼핑을 하다 보면 구매를 부추기는 장치가 여럿 마련되어 있는데 그중 하나가 Time Deal (특정 기간 동안 할인), Flash Sale (짧은 기간동안 한정 수량을 할인) 등의 이벤트이고 일반적으로 1초마다 시간을 업데이트하는 카운트 다운 타이머가 옆에 배치된다. 할인이 곧 끝나니 얼른 지르라는 은근한 압박을 주는데 이런 할인에 전혀 영향을 받지 않는 사용자도 있겠지만 UI/UX 관점에서 초 단위의 숫자가 계속 바뀌어서 시선이 집중되는 효과가 있다. 그래서 Home, PDP, 할인전 화면 등에서 주로 노출한다. Amazon SHEIN 쿠팡 오늘의집 이번 포스팅에서는 이러한 Count down 타이머를 구현해보고자 한다. 먼저 요구사항을 정리해보고, 단계별로 만들어 보자. TODO: 1. 남은 ..
최근 코엑스에서 1,300여 명이 참석한 국내 최대 규모의 애플 생태계 컨퍼런스 KWDC23가 개최됐다. Apple WWDC의 공식 후속행사 (WWDC Extra Event)로 진행된 최초의 국내 행사였다. 이번에 감사하게도 좋은 기회가 주어져서 Localization을 주제로 발표를 했는데, 발표를 하게 된 계기와 발표과정에서 배운 것들을 남겨봤다. 나중에 발표를 준비하시는 분들에게 참고가 되었으면 한다. 1. 발표 계기 5월의 어느 날 KWDC 준비위원회로부터 스피커 제안을 받았다. 입사 후 10개월 간 글로벌 앱을 개발하면서 배운 게 정말 많았지만, 쪼렙 1년차 개발자인데.. 내 미천한 지식으로 발표를 해도 될까? 고민이 됐다. 그런데 제안서를 살펴보니 개발자뿐만 아니라 디자이너, 기획자 등 App..
최근 9개월간 국내 제품을 해외 45개국에 판매하는 글로벌 프로젝트에 참여해 왔다. 2023년 2월에 MVP 버전의 앱을 출시했고, 그 이후 앱을 고도화하는 작업을 진행하고 있다. 최근 가장 전념하고 있는 건 판매자와 구매자 간의 채팅 기능을 개발하는 것이다. Socket 통신, Polling, Stomp 등 처음 접하게 된 네트워크 개념도 있었고, 글로벌 서비스라서 고민해 볼 수 있는 TimeZone, Locale, DateFormat 처리, 채팅 목록과 채팅 상세 화면의 복잡한 UI 구현, Up Scrolling 등 쉽지 않지만 흥미진진한 문제들을 맞닥뜨리며, 단기간에 경험치를 쑥쑥 올리고 있다. 이렇게 채팅 기능을 구현하면서 학습한 아래의 5개 주제를 시리즈 형식으로 포스팅해보려 한다. 1. Str..
버튼을 구현하는 건 굉장히 쉽다. 하지만 모든 작업을 다 한 것 같은데도 버튼이 Tap Gesture를 인식하지 못할 때가 있어서 답답했던 경험이 있다. 너무 간단한 기능이라서 오히려 적절한 검색 키워드를 찾거나 문제 원인을 파악하기가 더 어려웠다. 삽질하면서 찾아낸 원인 5가지를 정리해 봤다. 1. Storyboard Connection이 잘못된 경우 해결하기 가장 간단한 오류이다. Storyboard의 버튼과 @IBAction 메서드의 연결이 잘못된 경우이다. 여러 개의 버튼 또는 action 메서드를 복붙해서 만들었거나, 단순히 드래그를 잘못해서 발생한다. 아래처럼 Touch Up Inside 이벤트에 연결된 메서드가 1개 여야 정상동작한다. 코드로 UI를 그리는 작업에 익숙해졌는데, 반년만에 다시..
ModernRIBs README 하단을 보면 Xcode Template을 설치하라고 나온다. 설치 방법을 간단히 알아보자. (script라길래 Build Phases의 Run script 말하는 줄 알았는데 아니었음..) 참고로 Template을 추가하면 new file을 생성할 때 아래처럼 선택이 가능하다. ModernRIBs Template 설치 방법 1. 프로젝트 파일을 준비한다. 2. CocoaPod 또는 SPM으로 ModernRIBs 프레임워크를 설치한다. 3. https://github.com/DevYeom/ModernRIBs 코드를 다운받는다. 4. 해당 폴더로 이동한 뒤 터미널에 아래를 입력한다. $ cd tooling // Template 파일이 tooling에 위치해있음 $ sh ins..