HP Trivia (6)
Change Book Status 이번 강의에서는 책(Book)의 상태를 변경할 수 있는 기능을 구현한다. 책 상태는 .active, .inactive, .locked 세 가지로 구분되며, 사용자의 탭 제스처에 따라 상태를 변경하고 뷰에 반영한다. 상태 변경 시도와 오류 발생 처음에는 아래처럼 .onTapGesture를 통해 상태를 바꾸려 했지만...
Change Book Status 이번 강의에서는 책(Book)의 상태를 변경할 수 있는 기능을 구현한다. 책 상태는 .active, .inactive, .locked 세 가지로 구분되며, 사용자의 탭 제스처에 따라 상태를 변경하고 뷰에 반영한다. 상태 변경 시도와 오류 발생 처음에는 아래처럼 .onTapGesture를 통해 상태를 바꾸려 했지만...
GitHub 블로그 글을 작성할 때, 이미지 링크 뒤에 { width="50%" height="50%" } 같은 속성을 반복적으로 붙이는 작업을 자동화한다. 1. RayCast를 사용한 자동화 설치를 해주고 여기서 snippet을 만든다. 그리고 나는 이렇게 해주었다. (현재는 다시 수정했다.) 이렇게 자주 사용하는 2개에 대해서...
Books & Questions 이번 강의에서는 HP Trivia 앱의 Settings 화면(도서 선택 화면) 구성을 준비하기 위한 기초 작업을 시작한다. 사용자가 퀴즈에서 출제될 도서를 선택할 수 있도록 UI를 만들 예정인데, 실제 뷰(View)를 구현하기 전에 이를 뒷받침할 데이터 모델(Book)과 관련 클래스부터 정리할 필요가 있다. ...
Single Responsibility Principle 이전 글에서 간단히 언급했던 부분이지만, 이번엔 이 주제를 조금 더 구체적으로 짚고 넘어가려 한다. 현재 ContentView를 보면 모든 UIComponents를 직접 작성하여 코드의 가독성이 상당히 떨어지고 있다. 이제 View들을 새롭게 파일을 만들어서 코드를 옮김으로써 유지, 보수에...
Custom Animations 지난 글에서는 AVAudioPlayer를 활용해 사운드를 재생하고, transition 애니메이션과 함께 청각적 몰입감을 더하는 방법을 구현했다. 이번 글에서는 SwiftUI에서 사용자 정의 애니메이션(Custom Animations)을 통해 보다 세밀하고 생동감 있는 시각 효과를 만들어보려 한다. 참고로 이...
Audio 이제 이전 글에서 구현한 transition animation 효과에 맞춰 사운드를 재생시켜, 유저에게 시각뿐 아니라 청각적으로도 몰입감을 줄 수 있도록 해보려 한다. import AVKit @State private var audioPlayer: AVAudioPlayer! .onAppear { animateViewsIn = ...
📁 Folder vs Group (Xcode) 항목 Folder (파란색) Group (회색) 기본 적용 버전 Xcode 16부터 기본 Xcode 15 이하에서 기본 파일 시스템 반영 실제 macOS...
Predicate 수정 CoreData에서 SwiftData로의 마이그레이션을 마치며 기본적인 구조와 동작 오류는 대부분 해결했다. 하지만 실제 앱에서 데이터를 “조건에 맞게 필터링”하는 기능, 즉 Predicate는 아직 손대지 않은 상태이다. 이번 글에서는 SwiftData에서 predicate를 어떻게 사용하는지, 기존 방식과 어떤 차이가 있...
SwiftData 사용하기 Migration 하기 사실 이전에도 CoreData → SwiftData 마이그레이션 작업을 진행한 적이 있다. 이전글 참고. SwiftData 모델을 만들기 위해 Editor 메뉴에서 Create SwiftData Model을 실행하면, 다음과 같이 자동 생성된 코드가 나타난다: 예시: @Model public ...
Appgroup AppGroup 역시 이전에 다뤄봤던 내용이다. 이전글 참고. App Group 설정 및 권한 부여 Widget도 동일하게 해주자. 이렇게 추가해주면 된다. 효율적인 파일 관리를 위해 새롭게 추가된 Extension.entitlements 파일도 아래로 옮겨주자. 이때 발생하는 에러 해당 문제를 해결하기위해...