Note: PreviewUIKit

Mister Nay
1 min readJul 6, 2023

--

Using Xcode Previews for UIKit

**** Some project need to Disable Code Coverage for the scheme. (unchecking Code Coverage in Test section for scheme settings)

https://stackoverflow.com/questions/59705079/swiftui-canvas-preview-compile-error-undefined-symbols-for-architecture-x86-64

สามารถแก้ไขหน้าจอแสดงผลได้โดยแก้ previewLayout โดย Default จะเป็น รูปแบบ device .previewLayout(.fixed(width: 300.0, height: 40.0))

Preview UIView

#if canImport(SwiftUI) && DEBUG
import SwiftUI
import UIKit
@available(iOS 13.0, *)
struct ViewPreviews_Previews: PreviewProvider {
static var previews: some View {
UIViewPreview {
// MARK: แปะ view ที่ต้องการจะ preview ตรงนี้
return SomeUIView()
}.previewLayout(.fixed(width: 300.0, height: 40.0))
}
}
@available(iOS 13.0, *)
struct UIViewPreview<View: UIView>: UIViewRepresentable {
let view: View
init(_ builder: @escaping () -> View) {
view = builder()
}
func makeUIView(context: Context) -> UIView {
return view
}
func updateUIView(_ view: UIView, context: Context) {
view.setContentHuggingPriority(.defaultHigh, for: .horizontal)
view.setContentHuggingPriority(.defaultHigh, for: .vertical)
}
}
#endif

Preview UIViewController

#if canImport(SwiftUI) && DEBUG
import UIKit
import SwiftUI

@available(iOS 13.0, *)
struct ViewControllerPreviews_Previews: PreviewProvider {
static var previews: some View {
UIViewControllerPreview {
// MARK: แปะ view ที่ต้องการจะ preview ตรงนี้
return SomeViewController()
}
}
}

@available(iOS 13.0, *)
struct UIViewControllerPreview<ViewController: UIViewController>: UIViewControllerRepresentable {
func updateUIViewController(_ uiViewController: ViewController, context: Context) {}
let viewController: ViewController

init(_ builder: @escaping () -> ViewController) {
viewController = builder()
}

func makeUIViewController(context: Context) -> ViewController {
viewController
}
}
#endif

credit: https://www.swiftjectivec.com/using-xcode-previews-for-uikit/

--

--

No responses yet