HealthKit (3)
Simulator에서 MockData가 필요한 이유 시뮬레이터 환경 제약: HealthKit은 시뮬레이터에서 기본적으로 데이터를 수집하거나 저장할 수 없다. 데이터를 입력하거나 확인할 수 있는 기능이 제한적이기 때문에 MockData를 통해 시뮬레이터 환경에서도 동작을 검증할 수 있다. 수동 데이...
Simulator에서 MockData가 필요한 이유 시뮬레이터 환경 제약: HealthKit은 시뮬레이터에서 기본적으로 데이터를 수집하거나 저장할 수 없다. 데이터를 입력하거나 확인할 수 있는 기능이 제한적이기 때문에 MockData를 통해 시뮬레이터 환경에서도 동작을 검증할 수 있다. 수동 데이...
HealthKit Permission 요청하기 HealthKit GuideLine을 한번 읽어보도록 하자 디자인은 생략. HealthKit Image Download는 여기 한가지 중요한 점이 있다면. 해당 앱을 사용하는 Device가 HealthKit을 지원하는지 반드시 체크해야한다. When you enable the Health...
HealthKit을 사용한 앱을 만드는 걸 공부하면서 기록을 적어본다. 가급적 UI디자인은 크게 언급할 부분이 없다면 생략을 하면서 가도록 하겠다. 첫 화면의 디자인은 다음과 같다. Picker(Segmented) 적용하기 현재 디자인이 된 상태에서 Picker를 사용하여 step을 고를지, weight를 고를지를 정해본다. Picker를...
UI 디자인 UI를 그대로 디자인하면 가독성이 떨어지니 새로운 SwiftUI View파일을 만들어 거기에 디자인을 하도록 한다. LiveActivityView로 만들었다. 코드는 생략 Preview는 위와 같은데 버전의 차이로 양사이드 여백이 생기는건 이후에 해결 예정 GameLiveActivity 설정 struct GameLiveAct...
BasketballSim 이라는 앱으로 Dynamic Island & LiveActivity를 구현하려고 한다. 해당프로젝트의 기본적인 내용은 이미 만들어진걸 사용해서 패스 Dynamic Island와 Live Activity Live Activity: 잠금 화면 및 배너에 실시간 정보를 제공. Dynamic Island: iPho...
이렇게 SwiftCal 앱의 LockScreen을 디자인한다. 이번에 적용할 프로젝트는 CoreData Version으로 된 걸 사용했다. EntryView를 각 Case 별로 분류 우선 환경변수 @Environment(\.widgetFamily) var family를 만들어 준다. Widget의 Supported Family 수정 Loc...
LockScreen Widget 적용하기 SingleRepo, DoubleRepo가 있는 RepoWatcher를 가져왔다. 기존 SingleRepoEntryView에서 struct SingleRepoEntryView : View { @Environment(\.widgetFamily) var family var entry: Singl...
Concurrency & Tinted 적용 (iOS 18) 이전에 MainActor를 사용 하면서 뜬 Warning이 있다. 바로 이것. 이전에 에러가 떴던 이유는 CoreData를 사용할때 @MainActor func fetchDays() -> [Day] { // 중간 생략.. return try! contain...
CoreData to SwiftData (iOS 17) Convert 이전글에서 Intent Migration에 대해 언급을 한적이 있다. 이번에도 그와 유사한 방법으로 진행이 가능하다. 우선 CoreData 파일을 클릭하고. 아래 사진처럼 진행을 하자 그리고 next를 누르다가 target을 모두 체크를 하는걸 잊지말자. 그러면 ...
Widget 적용 기본적인 UI도 진행이 되었으니 이젠 Widget 설정을 해본다. 1. Entry struct CalendarEntry: TimelineEntry { let date: Date let days: [Day] } Entry의 이름을 바꾸고 날짜를 담을 days를 만들었는데 에러가 뜬다. 왜냐 Day의 경우 Co...