Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리팩토링
- swiftUI
- MVVM
- SWIFT
- Clean Code
- Human interface guide
- UICollectionView
- 클린 코드
- tableView
- combine
- map
- 리펙토링
- 애니메이션
- uitableview
- collectionview
- Xcode
- clean architecture
- 스위프트
- 리펙터링
- RxCocoa
- Protocol
- Refactoring
- Observable
- HIG
- ios
- UITextView
- uiscrollview
- ribs
- rxswift
- swift documentation
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 3. WWDC2024 정리 - (1) What's new in Xcode 16 (Xcode16 신기능, Code Completion, Isolated Global Variables, @Previewable, PreviewModifier) 본문
WWDC 정리/WWDC 2024 정리
[iOS - swift] 3. WWDC2024 정리 - (1) What's new in Xcode 16 (Xcode16 신기능, Code Completion, Isolated Global Variables, @Previewable, PreviewModifier)
jake-kim 2024. 6. 19. 01:08Code Completion (자동완성)
- Copilot과 유사하게 자동완성 기능을 제공
빌드세팅 - Isolated Global Variables
- 전역변수는 Concurrency에서 안전하지 않다는 warning 표출해주는 옵션
- 위 옵션을 키고 빌드 시 warning 확인 가능
간편한 프리뷰 - @Previewable
- 아래와 같은 RobotFaceSelectorView를 프리뷰 사용할 때 currentFace에 관한 바인딩이 필요한 상황
- 기존에는 위 뷰를 preview하려면 wrapper view를 만들어서 currentFace를 바인딩시켜야함
ex) 기존 방법
struct Simple_Previews: PreviewProvider {
struct ContainerView: View {
@State private var currentFace = RobotFace()
var body: some View {
RobotFaceSelectorView(currentFace: $currentFace)
}
}
static var previews: some View {
ContainerView()
}
}
- Xcode 16부터는 @State 프로퍼티를 따로 선언한 후, 앞에 @Previewable를 붙여서 사용하면 위 wrapper view없이 바로 사용 가능
PreviewModifier
- preview를 위한 환경이나 데이터를 더 쉽게 공유 가능
- 중복코드 제거 가능
- 미리보기 시스템에서 데이터 캐시 가능
ex) RobotNamer라는 구조체에 PreviewModifier를 준수
- makeSharedContext(), body(content:context:) 메서드 구현이 필요
- makeSharedContext() 메서드 반환값에는 preview를 하기위해서 필요한 데이터(context)를 리턴해주는것
- 위 예제에서는 RobotNameSelectorView에 가지고 있는 데이터인 RobotNamer에 해당
- 주의사항) 이 메서드는 캐싱되기 때문에 단 한번만 호출됨
- 위처럼 작성하면 preview 작성이 완성된 것
- 또 이렇게 작성된 previewModifier를 쉽게 사용하기 위해서 PreviewTrait을 extension하여 제공하도록 구현
- 이제 사용하는 쪽에서도 단순히 #Preview(traits:)으로 편리하게 사용가능
* 참고
'WWDC 정리 > WWDC 2024 정리' 카테고리의 다른 글
Comments