WidgetKit (8)
이번에는 Coredata를 연동한 Calendar 위젯을 만들어보려고한다. 일반적으로 박스를 친 부분에는 None인데, 이번엔 CoreData를 사용하기에 프로젝트를 생성하면서 CoreData도 같이 생성되게 하였다. 사실 체크 안했더라도 이후에 CoreData를 새로 추가해도 되긴하다. Attribute 추가 사진과 같이 한다. 뭐 ...
이번에는 Coredata를 연동한 Calendar 위젯을 만들어보려고한다. 일반적으로 박스를 친 부분에는 None인데, 이번엔 CoreData를 사용하기에 프로젝트를 생성하면서 CoreData도 같이 생성되게 하였다. 사실 체크 안했더라도 이후에 CoreData를 새로 추가해도 되긴하다. Attribute 추가 사진과 같이 한다. 뭐 ...
이전에는 git address를 enum을 통해 정해진 주소만 사용해서 적용을 했다면 이제는 주소를 추가하여 원하는 Repository를 확인 하도록 만들어 보려고 한다. ContentView UI Design Repo Widget의 APP의 ContentView를 디자인 해준다. 이부분은 생략 User Default 추가 및 적용 여...
App intents? iOS 17에서 애플은 APP Intents를 소개한다. 그렇다면 App Intents는 무엇일까? 이건 WWDC2024 Docs에서는 다음과 같의 정의를 한다. The App Intents framework provides functionality to deeply integrate your app’s actio...
WidgetBundle 만들기 WidgetBundle관련 Docs는 여기 간단하게 정리하면 여러개의 위젯을 제공하기 위함이다. 파일을 하나 만들어 주고 @main struct RepoWatcherWidgets: WidgetBundle { var body: some Widget { RepoWatcherWidget() ...
이제 조금 더 확장을 해보려고한다. RepoMediumView 만들기 또 새로운 파일을 하나 만들어준다. 이때 이전에 언급하지는 않았지만 target을 항상 신경써서 만들자 이전에 NetworkManager의 경우 혹시 원 프로젝트 파일에서도 사용이 될 가능성이 있어서 둘다 체크를 했지만, 지금 View의 경우는 Widget에서만 사용...
UI Design 이부분은 생략 다만 한가지 특이점이라면 HStack { StatLabel(value: 999, systemImageName: "star.fill") StatLabel(value: 99, systemImageName: "tuningfork") StatLabel(value: 999, systemImageName...
Dynamic Month 적용 Config 먼저 파일을 만드는데 일반 Swift File로 만든다. 이때 중요한점 target을 어떤것에 적용할지 반드시 확인하자. struct MonthConfig { let backgroundColor: Color let emojiText: String let weekdayTex...
SwiftUI를 공부하기전 파이널프로젝트를 하고 난뒤, 다른 조들의 프로젝트 결과를 보면서 하나 이건 해보고 싶다고 생각했던것이 바로 Widget 사용이었다. 하지만 전제조건은 SwiftUI를 사용해야한다는 것이었다. 그러다보니 그당시엔 UIKit에만 집중을해서 신경을 쓸수가 없었는데 마침 좋은 강의가 있어 그걸 기반으로 정리를 해보려 한다. ...
마지막 글이되겠다. 5시간 강의였는데 하나하나 정리하면서 넘어가다보니 꽤나 많은 시간이 걸렸다. MainActor MainActor란? MainActor는 UI 업데이트와 관련된 코드를 안전하게 실행하기 위해 사용되는 Swift의 동시성 모델이다. 이를 사용하면 UI 상태 변경이 항상 메인 스레드에서 이루어지도록 보장한다. ...
시나리오: 간단한 숫자 증가 앱 class Counter { var value = 0 func increment() -> Int { value += 1 return value } } struct ContentView: View { var body: some View { ...