이번 WWDC 2023 영상 중 위젯 구조에 대해 짧지만 상세히 다룬 세션(Bring widgets to life, 8분 ~ 10분)이 있었습니다. 평소 샘플 코드 구조를 흉내내며 위젯을 구현했었던 과거가 부끄러울 정도로... 제가 이해했던 것과 달라서 공유차 영상 내용을 정리합니다. 위젯을 구현하기 위해선, 먼저 Xcode에서 Widget Extension을 정의해야 합니다. 이 Widget Extention은 시스템이 확인하여 독립적인 프로세스로 동작(run)시킵니다. 위젯은 TimelineProvider를 정의합니다. 이 TimelineProvider는 일련의 Entries를 리턴하고, 각각의 Entry는 실제 위젯의 모델이 됩니다. 위젯이 Visible해지면, 시스템이 Widget Extensio..
글의 내용을 보충하는 의견, 잘못된 내용을 수정하는 의견 모두 다 환영합니다. NSFetchedResultsControllerDelegate 프로토콜에 iOS 13부터 DiffableDatasource를 지원하기 위해 등장한 controller(_:didChangeContentWith:) 메소드가 있는데, ViewContext와 함께 이 메소드를 사용할 경우 놓칠 수 있는 주의점이 있어서 기록해둡니다. 문제 상황 한 개의 NSManagedObject를 생성하고 저장한 뒤, 이를 반복할 때 한 개의 셀만 애니메이팅 되어야하는데 두 개의 셀이 애니메이팅함. 다음과 같은 상황을 가정 - 사용하는 ViewContext는 NSPersistentContainer에서 기본 제공하는 NSManagedObjectCont..
결론: 구글 로그인 요청하는 순간에 요청 권한 범위를 설정할 수 있게 하는 기능이 GoogleSignIn-iOS 6.2.0에 추가될 예정. iOS 구글 로그인, GoogleSignIn-iOS 프로젝트는 6.0.0 버전을 기점으로 오픈소스로 전환되었습니다. 그런데 동시에 사용자에게 추가 권한을 요청할 때 Incremental authorization pattern을 권장하게 되면서 기존과는 다른 사용자 경험이 생겼습니다. 이전에는 구글 드라이브를 앱 내에서 사용하기 위해 구글 로그인을 시도하면, 로그인과 동시에 기본적인 권한(이메일, 아이디 등) + 드라이브 읽기 권한을 동시에 요청할 수 있었다면, Incremental authorization에서는 구글 로그인 후 기본적인 권한을 획득 한 후에 다시 추가..
(본 글은 아래의 이슈를 참고하여 작성된 글입니다) https://github.com/google/google-api-objectivec-client-for-rest/issues/478 Cannot debug in lldb · Issue #478 · google/google-api-objectivec-client-for-rest After upgrading to any version higher than 1.3.11, we are unable to use lldb in Xcode to debug. Unlike #388, we do not see any errors in the console. An example of the failures we get in lldb is sh... github.com 개..
MemoryBread - 편리한 암기 생활, 암기빵! App Store 다운로드 링크 [암기빵은 문장의 암기를 도와주는 앱입니다] 직접 문장을 쓰고 종이로 가리는 건 이제 그만! 암기빵으로 쉽게 단어를 가려봐요. 판례처럼, '길지만 정확하게 외워야 하는 문장'이 있을 때, 암기빵으로 단어를 가려가며 외워보세요. 암기빵이 당신의 암기 생활을 도와줍니다. [암기빵은 어떻게 사용하나요?] 먼저 암기하고 싶은 문장을 적어요. '편집' 버튼을 눌러서 색필터를 선택하고, 가리고 싶은 단어를 터치해서 선택해요. 색필터 선택이 끝나면 '완료' 버튼을 누르고, 맨 아래 색필터를 선택해주면 단어를 가릴 수 있어요! 가린 단어를 살짝 보고 싶으면, 단어를 직접 터치! 그러면 그 단어만 살짝 볼 수 있어요. [서비스 이용 필..
(이하 '암기빵')은 사용자의 개인정보를 수집, 전송, 활용 하지 않습니다. 암기빵은 사용자의 선택에 따라 소셜 로그인(이하 "OAuth"라고 함)을 사용할 수 있도록 하고 있습니다. OAuth 서비스 이용 시 사용자의 데이터에 엑세스하고 서비스에 사용할 수 있습니다. OAuth 서비스 이용과정에서 OAuth 서비스 제공자에게 전달받은 Token 정보가 자동생성되어 사용자의 기기에 저장됩니다. 암기빵은 OAuth 서비스를 이용하여 제공받은 데이터나 개인정보를 저장하지 않습니다. OAuth 서비스의 이용을 원치 않는 경우 언제든지 로그아웃 버튼을 클릭하여 연결을 해제할 수 있고, 이 경우 저장되어 있던 Token 정보는 삭제됩니다. 암기빵에 대해서 지원 혹은 문의사항은 아래로 이메일 부탁드립니다. 개발자연..
22년 3월 21일 업데이트 (짝짝) GMT+9 22년 3월 9일을 기준으로 이 포스트에서 다뤘던 PR이 GoogleSignIn-iOS 프로젝트에 머지되었습니다. 다시 말해... 이 글에서 코드를 수정하라는 부분은, 이제 새로운 버전이 릴리즈 된다면 수정할 필요가 없어지는 거겠죠!! 크 구글 프로젝트에 PR 날리고 머지 된다니 저도 언젠가 해보고 싶네요. 해당 PR링크를 남깁니다. https://github.com/google/GoogleSignIn-iOS/pull/30 Add the option to choose additional scopes at sign-in by AntonKozlovskyi · Pull Request #30 · google/GoogleSignIn-iOS github.com (본 ..
스크롤뷰가 얼마만큼 스크롤되었는지에 따라서 navigationItem.titleView 를 건드려줘야 할 일이 있어서 UIScrollView > contentOffset 를 찾아보고 관련 메소드를 정리했습니다. UIScrollView > contentOffset contentOffset의 의미를 생각해보면 '콘텐츠가 오프셋된 정도? 떨어진 정도?'로 해석할 수 있습니다. 처음에는 '그래서 값이 어떻게 나오는 건데' 라는 생각이 들어서.. 바로 공식문서 확인해봤습니다. 번역하면, '스크롤뷰의 오리진에서부터 오프셋된 콘텐츠뷰의 오리진 위치' 정도인 것 같습니다. 저는 스크롤뷰가 얼마나 스크롤되었는지를 보고 싶었기에 이 값이 딱 제가 원하는 값입니다. 그런데 스크롤뷰를 처음 접했을 때는 contentOffse..
https://developer.apple.com/documentation/speech/recognizing_speech_in_live_audio Apple Developer Documentation developer.apple.com 위의 글을 번역했습니다~ 몇몇군데는 굉장한 의역이 들어가있을 수 있어서... 적당히 읽고 이상한 문장은 원문을 보시는 게 좋습니다 +_+. 이 예시 앱은 애플에서 제공하였고, 라이브 음성을 실시간으로 인식해서 글로 바꿔주는 앱입니다. 번역 시작. Configure the Microphone Using AVFoundation 이 앱은 디바이스의 마이크와 소통하기 위해 AV Foundation을 사용한다. 특히, 앱은 앱의 오디오 상호작용과 시스템의 나머지 부분을 관리하기 위..
전체 정리 지정 초기화 자동 상속조건 잘 이해하고, 언제 부모 클래스의 지정 초기화를 호출해야하는지를 이해해라. 또 프로퍼티를 바로 할당하지 않고 초기화 메소드에서 초기화한다면, 내 클래스 것 먼저 초기화하고 부모의 지정 초기화 메소드를 호출해야 한다(이것이 1단계 초기화). 이 초기화가 끝나면 각자 입맛에 맞게 프로퍼티 초기화, 메소드 호출 등을 할 수 있게 된다(self 참조도 이때부터 안전하게 가능) 초기화 종류 스위프트에는 두 가지 종류의 초기화 메소드가 있습니다. 바로 지정 초기화 메소드(designated initializer)와 편의 초기화 메소드(convenience initializer)입니다. 둘 사이에는 호출 규칙이 3가지 있습니다. 호출규칙1. 지정 초기화 메소드는 부모 클래스의 ..
- Total
- Today
- Yesterday
- 도커
- docker tag
- ios
- ES6
- docker image
- 도커 이미지
- 암기빵
- 게이밍모니터
- 왕국타이머
- 간단정리
- Swift
- docker
- 코코아터치
- docker-compose
- 출석하냥
- 카카오인턴십
- 앱출시
- 제발태그그만
- dockerfile
- 소프트웨어마에스트로11기
- QHD모니터
- 144hz모니터
- React Native
- 한성모니터
- tensorflow
- iOS #코코아터치
- 데일리
- 사이드 프로젝트
- 개인정보처리방침
- 평면모니터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |