【问题标题】:UIKit in Preview canvas doesn't comply with the option previewLayout预览画布中的 UIKit 不符合选项 previewLayout
【发布时间】:2022-12-20 01:22:23
【问题描述】:

我目前正在使用 UIKit 制作视图,现在我想像 SwiftUI 一样预览它。 但我的画布预览看起来像一个设备而不是视图本身的大小。

我做错了什么?

import UIKit

class MyYellowButton: UIButton {
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }

    required init?(coder: NSCoder) {
        fatalError("not support coder")
    }

    // MARK: - Private

    private func setupView() {
        backgroundColor = .yellow
        setTitleColor(.black, for: .normal)
    }
}

#if canImport(SwiftUI) && DEBUG
import SwiftUI
struct UIViewPreview<View: UIView>: UIViewRepresentable {
    let view: View

    init(_ builder: @escaping () -> View) {
        view = builder()
    }

    // MARK: - UIViewRepresentable

    func makeUIView(context: Context) -> UIView {
        return view
    }

    func updateUIView(_ view: UIView, context: Context) {
        view.setContentHuggingPriority(.defaultHigh, for: .horizontal)
        view.setContentHuggingPriority(.defaultHigh, for: .vertical)
    }
}

struct MyYellowButtonPreview: PreviewProvider{
    static var previews: some View {
        UIViewPreview {
            let button = MyYellowButton(frame: .zero)
            button.setTitle("buttonTest", for: .normal)
            return button
        }.previewLayout(.sizeThatFits)
    }
}
#endif

我希望我的预览看起来像这样

【问题讨论】:

    标签: swiftui uikit swiftui-previews


    【解决方案1】:

    “previewLayout”修饰符使用的“.sizeThatFits”和“.fixed”参数显示容器视图,在可选模式下没有设备边框和安全区域插图。在“实时”模式下,视图始终显示为带边框的设备。

    【讨论】:

      猜你喜欢
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2017-01-06
      • 2016-01-07
      • 1970-01-01
      相关资源
      最近更新 更多