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

Posted

技术标签:

【中文标题】单向(仅高度)自定尺寸 UI 组件预览【英文标题】:Single directional (Height only) self sizing UI components preview 【发布时间】:2020-06-13 07:04:45 【问题描述】:

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

注意 1.sizeThatFits 会将所有权重放在width 上,不会有多行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)
    

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

固定宽度和动态高度的组合。 添加了演示以进行更多说明。

以上是关于单向(仅高度)自定尺寸 UI 组件预览的主要内容,如果未能解决你的问题,请参考以下文章

角度:组件高度仅限屏幕

如何实现自定尺寸 UITableView?

使用 Autolayout iOS8 自动调整 UI 组件的大小

react-native 获取组件的宽度和高度

如何在 UITableView 单元格中创建自定尺寸网格?

iphone界面尺寸规范