- Split View
- WWDC
- 전달인자 레이블
- TOSS
- Keychain
- 스위프트
- Git
- 애플
- LanguageGuide
- DiffableDataSource
- appstore
- HIG
- Human Interface Guidelines
- CollectionView
- orthogonalScrollingBehavior
- Swift
- iTerm
- lineBreakStrategy
- 애플사이다
- IOS
- Accessibility
- 디자인패턴
- github
- lineBreakMode
- iPad
- Apple
- 야곰아카데미
- 앱개발
- UILabel
- GOF
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 (33)
애플사이다의 iOS 개발 일지

최근 코엑스에서 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..

Profile 화면을 구현하다가 컬러가 2개 이상 적용된 이미지를 사용했을 때 이미지 전체가 tintColor로 뒤덮이는 문제가 발생했다. (왼쪽처럼 구현하고 싶었는데, 오른쪽처럼 나타남) 대부분의 화면에서 이미지를 올릴 때 renderingMode를 .alwaysTemplate으로 설정했는데, 이게 원인이었다. 이미지의 renderingMode 3개 종류인 automatic/alwaysOriginal/alwaysTemplate을 정리했다. 결론 2개 종류의 이미지를 일반 화면 및 TabBar에 올리고, Rendering Mode를 automatic, alwaysOriginal, alwaysTemplate 순으로 지정해봤다. Custom Image : 흰색, 회색 2개 컬러가 사용된 이미지 System ..

대부분의 상용 앱에는 My 탭 또는 설정 탭의 '문의하기' 항목이 있다. 문의하기를 누르면 Mail 앱 (시스템 기본 앱)을 띄우면서 이메일을 작성하도록 사용자를 유도할 수 있는데, 이때 수신자 메일주소, 제목, 내용에 미리 원하는 값을 채워서 이메일 템플릿을 만들 수 있다. private func showEmailWithTemplate(subject: String, body: String) { // ✅ 이메일 템플릿 설정 var components = URLComponents() components.scheme = "mailto" components.path = "whatWeEat_help@gmail.com" // 메일 주소 components.queryItems = [ URLQueryItem(name..

나중에 복붙해서 사용하려고UILabel의 attributedString 설정값을 간단히 정리해봤다. private lazy var customLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoConstraints = false label.numberOfLines = 0 let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineBreakMode = .byTruncatingTail paragraphStyle.lineBreakStrategy = .hangulWordPriority paragraphStyle.alignment = .center paragraphSty..

지난 포스트 [줄바꿈] lineBreakMode 및 lineBreakStrategy 차이점을 작성하면서 UILabel에 attributedText를 사용하는 경우에는 label.lineBreakMode가 무시되고, attributedText의 paragraphStyle.lineBreakMode를 설정해야 한다는 걸 봤다. 근데 실험해보니 잘못된 정보였음.. 🫠🫠🫠 둘 다 사용했을 때 마지막에 설정한 값으로 적용되는 것을 확인했다. 아래처럼 2개 방법으로 코드를 작성해서 비교해봤다. 방법-1. label.lineBreakMode 먼저 -> paragraphStyle.lineBreakMode 나중에 설정 방법-2. paragraphStyle.lineBreakMode 먼저 -> label.lineBreakMo..