apple 216

UITableView isSelected, isHighlighted 정리

UITableView isSelected, isHighlighted 정리 UITableView에서도 UICollectionView와 동일하게 isSelected가 존재하지만 UICollectionView와 다르게 초기에 셀이 그려질 때 처음에 세팅되고 이후에는 호출되지 않음.UICollectionView와 동작성이 다름.UICollectionView 정리 내용: https://rldd.tistory.com/627 영상을 보면 보이듯이 처음에 isSelected가 호출된 후 그 이후로는 선택해도 해당 변수의 get-set 부분이 호출되지 않음. 예제코드import UIKitimport SnapKitfinal class SmapleTableViewController: UIViewController { ..

UICollectionView isSelected 정리

UICollectionView isSelected 정리 UICollectionView에서 overrdie isSelected를 통해 상태를 변경할 수 있음사용자가 선택할 때마다 isSelected가 변경됨.주의할 점: isSelected를 override해서 사용하는 경우 버전에 따라 선택 상태가 제대로 UI에 반영되지 않을 수 있음.TableView에서는 동작성이 다름.UITableView 사용성 링크: https://rldd.tistory.com/628호출순서override isSelected (이전에 선택된 아이템)DeSelect (이전에 선택된 아이템)override isSelected (현재 선택된 아이템)didSelect (현재 선택된 아이템)예제코드import UIKitimport Swift..

SwiftUI DynamicProperty

SwiftUI DynamicProperty 뷰의 외부 속성을 업데이트하는 저장 프로퍼티에대한 인터페이스   view의 body를 다시 계산(recomputing)하기 전에 해당 속성값을 제공  내부적으로 update() 메소드에 의해 기본 값을 업데이트.이 메소드는 필수이며 기본 구현이 제공됨. 이를 통해 저장 프로퍼티를 새로운 값으로 갱신.일반적으로 SwiftUI에서 @State와 같은 프로퍼티 래퍼가 사용될 때 뷰의 상태가 변하면 자동으로 호출되어 뷰의 상태를 최신으로 유지하는데 사용. 예제내용을 FileManager에 실시간으로 저장하는 예제.@AppStroage와 동일한 기능.@propertyWrapperstruct Document: DynamicProperty { @State private..

Swift nonmuating, mutating

Swift nonmuating, mutatingnonmutating은 해당 인스턴스의 상태를 변경하지 않음을 나타냄.기본적으로 struct나 enum의 메소드는 인스턴스의 프로퍼티를 변경할 수 없음.nonmutating 키워드는 인스턴스의 프로퍼티를 변경하지 않고 값을 설정할 수 있도록 허용다른말로 인스턴스 자체를 변경하지 않으면서 내부적으로 상태 조작 가능.Swift 언어의 발전에서 propertywrapper, macro를 이해하는데 도움.  예제 1private struct MyStruct { private var value: Int = 0 // ✅ mutating func increment() { value += 1 } // ❌ 내부 value..

SwiftUI @FoucsState @FocusedValue @FocusedObject

SwiftUI @FoucsState @FocusedValue @FocusedObject 요약@FocusState: 누가 포커스를 받았는지@FocusedValue: 포커스 된 값이 뭔지 관찰    - 값이 존재하더라도, Focus가 풀린 경우에는 관찰하고 있는 부분에서는 nil로 된다.extension FocusedValues { @Entry var commentFocusedValue: String?}@FocusedObject: 여러 유형의 변경사항을 보다 효율적으로 관리함.   - @StateObject 차이점   - 값이 존재하더라도, Focus가 풀린 경우에는 관찰하고 있는 부분에서는 nil로 된다.   @FocusState 일반적으로 enum을 구성하여 사용.Submit 버튼을 눌렀을 때 se..

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..

[WWDC24] UI 애니메이션 및 전환 효과 향상하기

[WWDC24] UI 애니메이션 및 전환 효과 향상하기 Intro- Transitions   - 화면 전환 및 프레젠테이션을 위한 새로운 고급 전환 방법 소개- SwiftUI animation   - SwiftUI animation과 UIKit 및 AppKit 간의 통합- Animating representables   - Representable을 통해 SwiftUI 애니메이션과 연결하는 방법- Gesture-driven animations   - 마지막으로 연속적인 제스처가 있을 때 UIView 및 NSView 애니메이션  Transitions SwiftUI에서 화면전환 새로운 API1. navigationTransitinStyle 추가2. matchedTransitionSource 추가 naviga..

apple/WWDC 2024.08.05

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

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

[WWDC24] Genmoji로 앱에서 더욱 풍부한 표현 선보이기

[WWDC24] Genmoji로 앱에서 더욱 풍부한 표현 선보이기  Whats' New- New Emoji keyboard- Genmoji- NSAdaptiveImageGlyph IntroExpress yourself- 이모티콘을 사용하여 앱의 표현력을 향상 시킬 수 있는 방법Emogi enhancements- 이모티콘 환경에 대한 최신 업데이트NSAdaptivelmageGlyph- 맞춤 이모티콘전송 API 소개Adopting in your app- 우리 앱에 얼마나 쉽게 적용하는지 소개Compatibility- 호환성 고려사항Advanced usage- 사용자 정의 텍스트 렌더링에 대한 일부 고급 사용 사례  Express yourself with emojiExpressive- 표현력 매우 풍부함Ver..

apple/WWDC 2024.08.03