본문 바로가기

전체 글82

[SwiftUI] 다크모드 대응 ColorScheme 향상된 사용자 경험을 제공하기 위해서 다크 모드에 대해 적절한 대응을 해야 한다. SwiftUI를 통해 프로젝트를 진행하면서 다크 모드에 대응하는 방법을 알아볼까 한다. 생각보다 엄청 단순했다. 바로 ColorScheme를 이용하는 방법이다. colorScheme | Apple Developer Documentation colorScheme | Apple Developer Documentation The color scheme of this environment. developer.apple.com ColorScheme는 화면 모드에 관련된 환경 변수이다. 이를 통해 현재 컬러스킴값을 가져오는 것은 물론 뷰의 환경값이 변경되면 이를 감지하여 뷰에 반영을 해준다. 이를 통해 한번 뷰를 간단하게 구현해 보겠.. 2024. 3. 20.
[SwiftUI/WatchOS] WatchConnectivity - WCSession을 이용하여 WatchOS와 IOS 데이터 주고 받기 워치앱을 개발하면서 워치와 iOS앱의 데이터를 연동해야 하는 상황이었다. 위젯의 경우 UserDefaults와 같은 데이터를 AppGroup을 통해 데이터를 공유하여 연동할 수 있었기에 워치도 이와 같은 방법으로 구현할 수 있으리라 생각하고 쉽게 생각하였다. 하지만 워치의 경우 iOS App의 Data Store 부분과 Watch App의 Data Store 부분이 완전히 분리되어 있어 위젯처럼 데이터 공유를 할 수 없다. 따라서 다른 방법을 이용해서 iOS와 워치 간의 데이터를 동기화시킬 수 있도록 해야헀다. 그 방법이 바로 Watch Connectivity이다. Watch Connectivity iOS 앱과 페어링 된 watchOS 앱 간의 양방향 통신을 구현합니다. - 공식문서 Watch Conne.. 2024. 3. 20.
ActivitiKit 사용해보기(IOS 16.2 이후 업데이트 버전) Project 시작하기 1. widget Extension 추가 (file - new - target) 2. Info.plist 에 Supports Live Activities 추가 후 값은 Yes로 변경 LiveActivity 구현 LiveActivity 파일 살펴보기 구성을 살펴보면 다음과 같다. 처음에 살펴보면 이게 뭔가 싶다. 아직도 난 이게 뭔가 싶다. 일단 두 개의 구조체 확인 가능하다. ActivityKitWidgetAttributes: 사용될 프로퍼티들 정의 ActivityKitWidgetLiveActivity: 보일 뷰 정의 ActivityKitWidgetAttributes ActivityKitWidgetAttributes : 정적 프로퍼티 (변화하지 않는 값) - name Activit.. 2024. 3. 13.
[알고리즘 / Swift] 힙 Heap Heap 이란? 데이터에서 최댓값 최솟값을 빠르게 찾기 위해 고안된 완전 이진트리로 우선순위 큐를 위해 만들어진 자료구조 최대힙(max heap) : 부모노드 ≥ 자식노드 최소힙(min heap) : 부모노드 ≤ 자식노드 💡 완전 이진 트리란? 이진트리 = 자식 노드가 최대 두 개인 트리 완전 이진트리 = 마지막 레벨을 제외한 모든 노드가 2개씩 채워져 있으며, 최하단 레벨 또한 좌측부터 채워져있는 노드를 의미한다. 즉 완전 이진트리는 왼쪽부터 자식 노드를 차례로 채운다. index 성질 heap은 완전 이진 트리 구조이기 때문에 노드 간 인덱스 관계를 나타낼 수 있다. → 완전 이진트리는 무조건 왼쪽부터 채워지기 때문에 채워지는 순서가 있음 = index 부모 노드 index = 자식 노드 index .. 2024. 3. 13.