ios 131

CloudKit(iCloud) 정리 이론 #2

CloudKit(iCloud) 정리 이론 #2CloudKit 정리 환경설정 #1https://rldd.tistory.com/607CloudKit 정리 이론 #2https://rldd.tistory.com/619CloudKit 정리 코드 예제 #3https://rldd.tistory.com/631 Intro- CloudKit Console 분석- Schema   - Indexes   - Record Types   - Security Roles   - History- Data   - Records   - Zones   - Subscriptions - CKSyncEngine (iOS 17이후) Schema메타데이터 • createdTimestamp: 생성한 시각 (DATE/TIME)• createdUserRe..

[UIKit] appearance callbacks (화면 전환시 LifeCycle)

[UIKit] appearance callbacks (화면 전환시 LifeCycle) 기본적으로 UIKit에서 ViewController의 라이프 사이클은 위의 형태로 진행된다.  화면 전환 일반적인 경우 화면전환 과정에서 특별한 사용자의 액션이 없을 경우에는  (사용자의 액션이 없는 일반적인 경우)> push: Disappeared에서 시작해서 Appearing과정을 따름.> pop: Appeared에서 시작해 Disappearing과정을 따름.  (pop 과정 중 사용자의 인터렉션에 의해 취소된 경우)-> 사용자가 화면을 팝하려고 하다가 놓은 경우 즉, viewWillDisappear과 viewDidDisAppear사이이 경우에는 뷰가 바로 Disappeared 상태로 이동한 다음 사이클을 거치면서 ..

[WWDC23] Accessibility & Inclusion

[WWDC23] Accessibility & Inclusion Apple에게 접근성은 필수적인 부분.우리가 앱의 접근성을 매우 쉽게 개선할 수 있도록 애플은 여러가지를 개선  Introduce- Accessibility enhancements   - 새로운 API에 탐구- Improve accessibility visual   - SwiftUI에서 접근성 개선- Keep state up-to-date   - UIKit에서 접근성 최신 상태로 유지하는 방법   새로운 접근성 안내 isToggle을 통해 힌트를 제공  알림레이아웃 변경화면 변경페이지 스크롤 알림을Swift에 네이티브 방식을 전송 가능   버튼의 행위에 알림을 달 수 있음.  중요도를 설정할 수도 있음.제 시간에 발음되지 않으면 무시되도 무방..

apple/WWDC 2024.07.31

[WWDC24] Swift의 성능 살펴보기

[WWDC24] Swift의 성능 살펴보기Swift의 Low-level에 대해서 알아볼 예정 Introduce- What is performance?: 성능이란?- Low-level principles: Low-level의 성능을 볼 때 고려해야 할 원칙- Putting it together: Swift의 어떻게 구현되는지, 성능에 어떤 영향에 미치는지 세부 사항을 알아보기 - What is performance?성능을 다차원적이고, 상황에 따라 달라집니다. 일반적으로 우리는 거시적인 문제 때문에 성능에 관심을 갖는다.  UI가 클릭하기 힘들 정도로 버벅이는 등의 문제가 생김. 하향식 방법을 조사많은 경우 코드의 Low-level 수준의 성능에 영향을 주지 않고 알고리즘 개선을 통해 이러한 문제를 해결...

apple/WWDC 2024.07.28

[iOS] infinite carousel DiffableDataSource + CompositionalLayout

[iOS] infinite carousel DiffableDataSource + CompositionalLayout UIKit에서 DiffableDataSource과 compositonalLayout을 사용하여 구현해보자. 전체 소스코드와 해당 코드에 대한 주석을 포스팅 제일 하단에 전부 넣어두었음. 예제 영상 무한히 회전하는 스크롤 뷰에 대한 구현 아이디어는 이미 많이 존재하나, 해당 포스팅에서는 diffableDataSource의 특성에 맞게끔 적용 (구현 방식) [앞에 붙는 id만 다른 원본] + [원본] + [뒤에 붙는 id만 다른 원본]을 먼저 구성한 후 한번에 apply diffable의 경우에는 데이터가 변경되었을 때, snapshot을 수정하는게 아닌 다시 찍음. 해당 부분은 iOS 13,..

[Swift] New access modifier: package

New access modifier: package Introduction 현재 다른 모듈에서 특정 심볼에 접근하기 위해서는 public으로 정의되어야 함. public 패키지 내외부 모두에서 접근 가능하기에 바람직하지 않음. 따라서 새로운 접근제어자를 만들어 심볼의 범위를 더 명확하게 하고자 함. Swift 5.9에서 도입 Motivation Module Engine in gamePkg: public struct MainEngine { public init() { ... } // `public`으로 의도된 프로퍼티 public var stats: String { ... } // 동일한 패키지의 `Game`에서만 접근할 수 있는 `run` 함수 public func run() { ... } } Modul..

[Natural Language] 텍스트 간 유사점 찾기

[Natural Language] 텍스트 간 유사점 찾기 Swift 언어를 사용해 단어 또는 문장 사이의 의미적 거리를 계산 단어나 문장 간의 의미적 유사성을 찾으면 앱의 사용자 환경을 개선하는 데 도움이 될 수 있음. 예를 들어, 검색어 '구름'이 '하늘'이라는 단어와 관련이 있다는 것을 알고 검색어를 확장하여 더 관련성 높은 결과를 표시함으로써 특정 사진을 검색하는 경험을 개선가능. 자연어 텍스트 사이의 유사점을 찾으려면 텍스트 임베딩을 사용. 임베딩은 단어 또는 문장과 같은 문자열을 벡터 공간에 매핑하는 것으로, 의미적으로 유사한 문자열은 벡터가 유사하므로 벡터 공간에서 서로 더 가까움. - 즉, 0에 가까울수록 유사함. 임베딩은 다음과 같은 작업에 사용 예를 들어, 검색 쿼리를 확장하기 위해 주어..

[Natural Language] Overview

[Natural Language] Overview - Overview - tokenizing-natural-language-text - identifying-the-language-in-text 자연어 텍스트를 분석하고 언어별 메타데이터 추론 자연어 프레임워크는 다양한 언어와 스크립트를 지원하는 다양한 자연어 처리(NLP) 기능을 제공. 이 프레임워크를 사용하여 자연어 텍스트를 단락, 문장 또는 단어로 분류하고 품사, 어휘 클래스, 어휘, 스크립트 및 언어와 같은 해당 세그먼트에 대한 정보에 태그를 지정할 수 있음. 이 프레임워크를 사용하여 다음과 같은 작업을 수행 - 언어 식별, 텍스트의 언어를 자동으로 감지 - 토큰화, 텍스트 조각을 언어 단위 또는 토큰으로 나누는 작업 - 품사 태깅: 개별 단어에 ..

[SwiftUI] NavigationLink 화살표 없애기

[SwiftUI] NavigationLink 화살표 없애기 SwiftUI에서 NavigationLink를 사용하면 기본적인 화살표가 생긴다. 해당 포스팅의 방법은 궁극적으로 화살표를 없애는게 아니고, ZStack과 opacity를 활용한 원하는 UI를 그려내는 방법이다. import SwiftUI struct ContentView: View { var body: some View { ZStack(alignment: .leading) { NavigationLink { // destination View } label: { EmptyView() }.opacity(0) Text("내 아이템") } } } 아래 이미지처럼 사용할 수 있다.

SwiftUI keyboard 이벤트 감지하기

SwiftUI keyboard 이벤트 감지하기앱 개발에 있어서 키보드 상태에 따라서 뷰의 다른 컴포넌트들의 높이가 조정되는 등 키보드와 관련해서는 꽤나 까다로움 UIKit을 사용한다면  - iOS 15 이상: keyboardLayoutGuide를 활용하여 레이아웃을 잡기 - iOS 14 이하: 키보드의 상태에 따라 키보드의 높이를 계산해서 뷰의 위치를 조정view.keyboardLayoutGuide SwiftUI 사용 - iOS 15 이상: @FocusState 활용 - iOS 14 이하: NotificationCenter와 Combine을 활용  샘플코드 키보드 상태를 읽을 수 있도록 아래 코드를 작성protocol KeyboardReadable { var keyboardPublisher: Any..