# 이슈 collectionview 안에 cell이 두개 이상이면 왼쪽 정렬이 된다. 하지만 cell이 하나 일 때만 센터 정렬이 된다. # 해결 collectionView의 estimate size를 automatic -> none 으로 바꾸면 single cell 일 때도 왼쪽 정렬이 잘된다. # Reference https://stackoverflow.com/questions/60000398/align-single-uicollectionviewcell-to-the-left-of-the-collectionview align single UICollectionViewCell to the left of the collectionView I've got a collectionView that is insi..
[ 배경 지식 ] AVAudioSession AVAudioSession 은 앱과 시스템의 중개자로서 오디오를 사용하는 방법을 시스템에게 전달하는 객체입니다. Default Audio Session은 기본 동작은 제공하지만 media app에서 필요한 오디오 동작들까지는 제공하지 않습니다. 앱의 audio session category 를 설정해줌으로서 기본 동작을 바꿀 수 있습니다. category 종류로는 7가지가 있습니다. (참고: Audio Session Categories and Modes) 재생 앱이 가장 많이 사용하는 category는 playback 입니다. (녹음된 음악 또는 기타 사운드를 재생하는 카테고리 / 기본 nonmixable 옵션) 이 카테고리는 오디오 재생이 앱의 중앙 기능임을..
XCode > Build Setting에서는 Swift major 버전만 확인가능합니다. (swift 4.2만 왜 나오는 지 모르겠네요) Swift5로 되어있을 때 구체적 버전을 알고 싶으니 통상적인 명령어(?)를 실행시켜봅니다. 하지만 이 명령어는 응용프로그램에 있는 xcode 버전만 나오는 것 같아요 (추측) swift --version swift 5.5를 쓰는 xcode를 끌어다놓고(바탕화면에 위치함) 아래 명령어를 입력해주면 여전히 swift 5.4로 나오기 때문...!!! 그러면 xcode별 구체적인 버전을 확인하고 싶다면 어떻게 해야할까요?! 터미널에 xcode를 끌어다놓고 (자동으로 path가 입력됨) path 뒤에 이것을 입력해주면 됩니다! /Contents/Developer/Toolcha..
[1] Focus System UIFocusItem 프로토콜은 item이 focused 될 수 있음을 의미합니다. UIFocusEnvironments 프로토콜은 focusable items들 간의 hierarchy를 정의합니다. UIView는 이 두개의 프로토콜을 채택하고 있습니다. 즉 모든 뷰는 focused 될 수 있으며, focused 될 수 있는 subviews를 가질 수도 있습니다. UIViewController는 오직 UIFocusEnvironments 프로토콜만 채택하고 있습니다. [2] Focusability canBecomeFocused 는 현재 뷰가 being focused 될 수 있는 지 여부를 나타내는 프로퍼티 입니다. 이 프로퍼티를 통해 focus engine 에게 view의 fo..
Time Format 중 Hour를 헷갈렸어서 정리 [ 요약 ] - HH: 24 hour format / 무조건 2자리 (필요할 경우, 앞에 0 붙여줌) - hh : 12 hour format / 무조건 2자리 (필요할 경우, 앞에 0 붙여줌) - H : 24 hour format / 1~2 자리 - h: 12 hour format / 1~2 자리 [ 실험 ] 우선 플레이그라운드를 열고 준비를 합니다. Case 1. let sampleDate = date(year: 2021, month: 7, day: 5, hour: 22, minute: 30)! print(DateFormatter.time_HHmm.string(from: sampleDate)) // 22:30 print(DateFormatter.tim..
# notification을 눌렀을 때 들어오는 메소드 1) application(_:didReceiveRemoteNotification:fetchCompletionHandler:) - remote notification을 눌렀을 때 들어오는 메소드 2) userNotificationCenter(_:didReceive:withCompletionHandler:) - remote, local notification을 눌렀을 때 들어오는 메소드 - iOS 10 이상부터 remote notification을 이 메소드로 처리하라고 권장함. - Handling Notifications and Notification-Related Actions 문서에서는 항상 competionHandler() 를 콜하라고 적혀있음..
Provisioning Profile 관련 헷갈리는 것들을 기록 ✏️ [1] Provisioning Profile의 Capabilities 는 지원가능한 Capabilities를 말한다. MyApp이라는 예제 앱을 만들고 developer 사이트 > Identifiers 에 가서 App ID를 등록해줬습니다. 이 때 Capabilities 중 Access WiFi Information을 체크해준 것을 주목해주세요! 그리고 Profiles에서 Provisiong Profile을 만들고 다운로드 눌러줍니다. 그리고 다운로드된 Provisiong Profile을 더블 탭하여 설치해주면 XCODE Provisiong Profile 목록에 뜨는 데 선택해줍니다. 느낌표 눌러서 Provisiong Profile 정..
User Notifications framework를 사용하여 Local Notification을 create & schedule 할 수 있습니다. [1] Asking Permission to Use Notifications Asking Permission to Use Notifications 문서 를 참고해주세요. 이런 얼럿을 띄워서 Notification 권한을 먼저 받아줍니다. 보통 이 얼럿은 앱 처음 실행시킬 때 보여주잖아요! 근데 문서에서는 사용자가 이 앱에 노티 권한이 필요한 이유를 이해할 수 있는 context에서 권한을 요청하라고 나와있습니다. 예를들어 리마인드 노티를 보내주는 task-tracking 앱이라고 한다면, 사용자가 첫번째 Task를 예약한 후 이 권한을 요청하는 것이 좋습니다..
[ 목표 ] RIBs 에서 Template과 template을 xcode에 설치할 수 있는 스크립트를 제공하는 것처럼 두개의 템플릿 (Reactor Template / Reactor Unit Tests Template)과 install 스크립트를 만들어보기! 그리고 Reactor Template에 옵션 (접근제어자를 public으로 할 건지 internal로 할 건지) 을 추가해보기! [1] 초기 setup 우선 reactor-tooling 이라는 폴더를 만들고 Reactor.xctemplate Reactor Unit Tests.xctemplate 이라는 두개의 빈 폴더를 만들어줬습니다. 그 다음 RIBs의 install 스크립트 를 적당히 수정해서 폴더로 가져와줍니다. #!/usr/bin/env sh ..
viewDidLoad 에 관한 실험 (⚠️ 실험만 있고 분석은 없습니다 ⚠️) XIB로 만든 뷰컨이랑 스토리보드에서 만든 뷰컨이랑 실험해봅니다. 참고로 저렇게 viewDidLoad 안에서 프린트안하고 isViewDidLoaded 를 찍어보면서 테스트해도 됩니다! Case 1. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let vc = XIBViewController() let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! Sto..
- Total
- Today
- Yesterday
- Python Type Hint
- SerializerMethodField
- 구글 Geocoding API
- Sketch 누끼
- github actions
- Watch App for iOS App vs Watch App
- flutter dynamic link
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- ribs
- Flutter Text Gradient
- PencilKit
- 플러터 싱글톤
- METAL
- flutter deep link
- 장고 URL querystring
- Django FCM
- Flutter getter setter
- 플러터 얼럿
- flutter 앱 출시
- Flutter Clipboard
- Flutter 로딩
- Django Heroku Scheduler
- ipad multitasking
- flutter build mode
- DRF APIException
- Flutter Spacer
- drf custom error
- Dart Factory
- cocoapod
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |