首页 > 解决方案 > 单向(仅高度)自定尺寸 UI 组件预览

问题描述

我有一个UITableViewCell包含一个简单UIStackView和 2 UILabels(所以它来自UIKit,不是本机 SwiftUI),它应该有一个静态宽度和动态高度。如何在无需查看实际手机尺寸的情况下进行预览?

注 1.sizeThatFits将所有的权重放在s 上width,不会有 multiline labels

适合的尺寸

注意 2.device显示屏幕主视图的额外无用空格。

设备

注3.fixed(width:height:)不是首选,因为它会根据我们的需要有更少的空间或额外的无用空间。

注4:需要这样的东西:(对于UIStackView在此处输入图像描述


演示

struct UILabelPorted: UIViewRepresentable {
    var configuration = { (view: UILabel) in }

    func makeUIView(context: UIViewRepresentableContext<Self>) -> UILabel {
        let uiView = UIViewType()
        uiView.setContentHuggingPriority(.defaultHigh, for: .vertical)
        uiView.setContentHuggingPriority(.defaultHigh, for: .horizontal)
        return uiView
    }

    func updateUIView(_ uiView: UILabel, context: UIViewRepresentableContext<Self>) { configuration(uiView) }
}

struct UILabel_Previews: PreviewProvider {
    static var previews: some View {
        UILabelPorted {
            $0.text = "This label should have multiple lines like it is in a UITableView cell."
        }
        .previewLayout(.sizeThatFits)
    }
}

标签: xcodeswiftuipreview

解决方案


目前还不是很清楚问题出在哪里,但你需要类似的东西

ContentView()
    .previewLayout(.fixed(width: 414, height: 300))

推荐阅读