프리뷰에서 기본 뷰 컨트롤러를 보여주는 방법을 알아보자.
#Preview {
AddNumberViewController() // 기본 프리뷰
}
이렇게 하면 네비게이션 바가 없는 기본 뷰만 보이게 된다.
네비게이션 기능을 테스트하려면 다음과 같이 설정하면 된다:
#Preview {
UINavigationController(rootViewController: AddNumberViewController())
}
네비게이션 컨트롤러를 사용하면 이런 장점이 있다:
// 단일 디바이스
#Preview {
let viewController = AddNumberViewController()
viewController.preferredContentSize = CGSize(width: 375, height: 667)
return viewController
}
// 여러 디바이스 동시에 보기
#Preview("iPhone 15 Pro") {
let vc = AddNumberViewController()
vc.preferredContentSize = CGSize(width: 393, height: 852)
return vc
}
#Preview("iPhone SE") {
let vc = AddNumberViewController()
vc.preferredContentSize = CGSize(width: 375, height: 667)
return vc
}
#Preview {
let vc = AddNumberViewController()
vc.overrideUserInterfaceStyle = .dark // 다크모드로 보기
return UINavigationController(rootViewController: vc)
}
#Preview("기본 상태") {
AddNumberViewController()
}
#Preview("데이터가 있는 상태") {
let vc = AddNumberViewController()
// 데이터 설정
return vc
}
#Preview("디바이스 테스트") {
Group {
AddNumberViewController()
.previewDevice("iPhone 15 Pro")
AddNumberViewController()
.previewDevice("iPhone SE")
}
}
#Preview {
let vc = AddNumberViewController()
vc.preferredContentSize = CGSize(width: 375, height: 667)
return vc
}
.environment(\.locale, Locale(identifier: "ko-KR"))
#Preview {
let vc = AddNumberViewController()
vc.preferredContentSize = CGSize(width: 375, height: 667)
return vc
}
.environment(\.sizeCategory, .accessibilityExtraLarge)
#Preview("여러 환경") {
Group {
// 기본 모드
UINavigationController(rootViewController: AddNumberViewController())
.previewDisplayName("기본")
// 다크 모드
let darkVC = AddNumberViewController()
darkVC.overrideUserInterfaceStyle = .dark
return UINavigationController(rootViewController: darkVC)
.previewDisplayName("다크모드")
// 큰 글씨 모드
let largeTextVC = AddNumberViewController()
return UINavigationController(rootViewController: largeTextVC)
.environment(\.sizeCategory, .accessibilityLarge)
.previewDisplayName("큰 글씨")
}
}
SwiftUI Preview를 사용하면 이런 점이 좋다:
이런 프리뷰 기능들을 잘 활용하면 UI 개발 과정에서 생길 수 있는 문제들을 미리 발견하고 해결할 수 있다.
감사합니다 태호님!