일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Swift
- swift concurrency
- backend
- cloud functions
- fcm
- widgetkit
- WWDC22
- coreml
- ios
- Flutter
- task.yield()
- Sendbird
- createml
- github
- Coding Test
- UITableView
- tabman
- 코테
- Firebase
- spring
- UIStackView
- Tuist
- Project
- Complication
- watchkit
- Apple Developer Academy
- Delegate Pattern
- SwiftUI
- app intents
- UIDatePicker
- Today
- Total
목록2024/11/12 (15)
azhy의 iOS 이야기
2022년 7월 24일에 작성됨 UIDatePicker로 날짜를 선택하는 경우, 특정한 날짜를 선택하면 안 되는 경우가 있습니다. 예를 들어 오늘 기준 미래의 날짜를 선택하면 안되거나 과거 특정한 날 이상을 벗어나면 안 되는 경우 등 다양한 경우의 수가 존재하죠. 이럴 때 UIDatePicker에 선택할 수 있는 날짜의 범위를 지정해 줄 수 있습니다.private let datePicker: UIDatePicker = { let datePicker = UIDatePicker() datePicker.preferredDatePickerStyle = .wheels datePicker.datePickerMode = .date datePicker.locale = Locale(identifie..
2022년 7월 22일에 작성됨기획첫 번째 앱 출시하고 바로 두 번째 앱을 뭐 만들까 고민하고 있었습니다. 첫 번째 앱은 StoryBoard를 이용해서 UI를 그리고, UIKit 기반으로 작성했으니까 두 번째 앱은 SwiftUI를 경험해보고 싶었습니다.그래서 SwiftUI로 만들기로 결정을 했고, 어떤 것을 만들까 고민하다가 이번에도 처음 해보는 SwiftUI로 만들어야 해서 엄청난 기술을 요구하는 프로젝트는 진행할 수가 없어서 생각해 낸 게 환율 계산기였습니다. 단순한 계산기가 아닌 환율 계산기라면 난이도도 적당하다고 판단이 됐습니다. 이미 앱스토어에 올라와있는 환율계산기 몇 개를 다운받아 봤는데, 대부분 디자인도 비슷하고 기능도 비슷했습니다. 사실 우리한테 중요한건 SwiftUI라는 새로운 문법으로 ..
2022년 7월 21일에 작성됨Google AdMob에 앱 추가Google AdMob 회원가입이 안되어있으면 홈페이지에서 회원가입을 해주시고 앱 추가를 클릭해 주세요. 만약 본인의 앱이 앱 스토어에 등록되어 있으면 첫 번째 선택, 아직 등록되지 않은 상태면 두 번째 선택을 해주세요.앱 준비 상태에 관해 문서를 보면 "AdMob에서 새 앱을 설정할 때는 앱이 검토 및 승인을 거쳐야 광고가 게재될 수 있습니다." 그리고 앱을 검토받으려면 첫 번째에 "앱을 게시해야 합니다."라고 적혀있습니다.즉, 만약 앱을 등록하지 않은 상태에서는 AdMob을 테스트로 실행시켜 보고 정식으로 앱을 등록시킨 다음 검토를 받으면 됩니다. ( 앱 스토어에 앱 연결하기 참고 )광고 단위 추가앱을 추가했으면 광고단위 추가 버튼을 클릭..
2022년 7월 19일에 작성됨 기본적으로 widget 은 본인이 지정한 시간에 맞춰서 자동으로 업데이트시킵니다,하지만 앱 쪽에서 데이터가 변경되거나 사진이 변경되거나 등 앱의 변경사항이 맞춰 바로 위젯도 변경해줘야 하는 경우가 생깁니다.if #available(iOS 14.0, *) {WidgetCenter.shared.reloadAllTimelines()} else {} 이 코드를 넣으면 위젯이 바로 업데이트가 됩니다. iOS 14 버전부터 사용이 가능합니다.
2022년 7월 19일에 작성됨 앞에서 작성한 WidgetKit [1] 부분을 보면 맨 처음에 기본적으로 app과 app extension는 각각 따로 container를 가지고 있어서 둘 사이는 UserDefaults를 공유하지 않는다고 설명했습니다. 이번 글은 저번 Widget 1, 2의 연장이기 때문에 Widget Extension으로 포커스를 잡고 정리하겠지만 AppExtension은 Widget 말고도 많습니다. (Today Extension, Widget Extension, Siri Extension 등) 그래도 Widget 이랑 크게 다를 게 없을 거 같다는 느낌이긴 합니다. 어쨌든 이번엔 Widget Extension을 예시로 정리해 보겠습니다!App Group 추가먼저 App 쪽에 Sig..
2022년 7월 18일에 작성됨 지난 글에 이어서 진행됩니다. 샘플 위젯을 만들고 실행까지 시켜봤으니 한 단계 더 나아갈 시간입니다. 예시로 제공되는 코드를 보면 Provider와 SimpleEntry에 TimelineProvider, TimelineEntry 가 채택되어 있습니다.Time이라는 개념이 Widget에서 엄청 중요한 역할을 합니다. WidgetKit은 그림과 같이 작동합니다. 그림을 통해 예를 들면 9시, 9시 30분, 10시 5분이라는 시간을 지정해 놓으면 WidgetKit은 그 시간에 맞춰 그 시간의 View를 Widget으로 전송하여 업데이트시켜줍니다.왜 이렇게 동작을 하냐? 위젯을 사용하는데 로딩이 걸린다? 사용하는 사람이 과연 있을까요..? 그래서 업데이트할 시간을 정해놓고 그 시..
2022년 7월 18일에 작성됨 애플을 사용하면 widget은 정말 유용하게 사용합니다. 그래서 프로젝트에 한번 추가해서 사용해 보며 공부해보려 합니다. 아마 widget 관련해서 짧으면 2개 많으면 3~4개 정도에 나누어서 글을 작성할 예정입니다.WidgetKitSwiftUI용 Widget API 및 WidgetKit 프레임워크를 사용하여 손쉽게 위젯을 빌드하고 iOS, iPadOS 및 macOS 어디에서나 사용할 수 있습니다. widget은 app extension을 사용해서 만듭니다. App Extension Programming Guide 에는 app과 app extension 사이의 관계에 대해 자세하게 설명하는데 그림을 보면 알 수 있듯, 기본적으로 app과 app extension는 각각 따..
2022년 7월 12일에 작성됨Lottie 라이브러리 import간단힌 Lottie 라이브러리에 대해 설명하자면 에어비앤비에서 제공하는데, 쉽게 애니메이션을 그려주는 라이브러리입니다.공식문서 를 통해 각자 원하는 방법으로 import 해주세요. 개인적으로 SPM을 선호해서 저는 SPM으로 import 했습니다.Lottie 파일 다운로드따로 디자이너가 있는 회사이거나 팀 프로젝트이면 디자이너분한테 파일을 받으면 되지만 혼자하는 프로젝트이면 LottieFiles 요기서 원하는 파일을 찾아서 다운해주세요. 보시면 알겠지만 다양한 파일로 다운이 가능합니다. 저희가 필요한 파일은 제일 상단에 Lottie JSON 파일입니다. Lottie는 JSON 형식의 파일을 이용하여 애니메이션을 렌더링하기 때문이죠. 다운로드..
2022년 7월 12일에 작성됨 프로젝트 작업을 하다가 갑자기 한눈에 봐도 어지러운 이런 에러코드가 떴습니다.Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated: failed at lookup with error 3Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.c..
2022년 7월 9일에 작성됨Struct, Class 공통점값을 저장할 프로퍼티 정의함수적 기능을 제공하는 메서드 정의"."을 사용하여 하위 프로퍼티에 접근 가능생성자를 통해 초기상태 설정 가능확장 (extension) 가능프로토콜 사용 가능정의 예시struct SomeStructure { // structure definition goes here}class SomeClass { // class definition goes here} Struct와 Class 차이점Struct는 값 타입, Class는 참조 타입Class는 상속이 가능하지만 Struct는 상속 불가능 -> 프로토콜 채택해서 기능 확장 가능 (스위프트 권장방식)타입캐스팅은 클래스의 인스턴스만 가능 (상위 또는 하위 클래스 타입으..