单向(仅高度)自定义UI组件预览

问题描述 投票:0回答:1

我有一个UITableViewCell,其中包含一个简单的UIStackView和2个UILabel s(它是从UIKit,不是原生SwiftUI),应该具有静态宽度和动态高度。我该如何预览而不需要查看手机的实际尺寸?

注1.sizeThatFits将所有权重都放在width上,并且不会出现多行label s

sizeThatFits

注2.device显示屏幕主视图多余的空白区域。

device

注3:不希望使用.fixed(width:height:),因为它会根据我们的需求减少空间或增加多余的空间。

注4:需要以下内容:(对于UIStackViewenter image description here


DEMO

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)
    }
}
xcode swiftui preview
1个回答
0
投票

不清楚问题出在哪里,但是您需要类似的东西

ContentView()
    .previewLayout(.fixed(width: 414, height: 300))
© www.soinside.com 2019 - 2024. All rights reserved.