首页 > 解决方案 > 带有 VFL 约束的场景 Dock 视图未显示

问题描述

我有一个视图控制器,它有一个放置在场景 Dock 中的 UIView(名为 pickerView)。我使用 Scene Dock 的原因是这个 UIView 将包含许多子视图,我不想弄乱情节提要。我正在使用 VFL 来调整此 pickerView 的大小,使其成为设备的全屏。

问题是,当我按下 openPickerButtonPressed 时,黄色的pickerView 永远不会出现。我在这里错过了什么吗?VFL 约束设置是否正确?

override func viewDidLoad() {
    super.viewDidLoad()
    self.pickerView.translatesAutoresizingMaskIntoConstraints = false

}

@IBAction func openPickerButtonPressed(_ sender: UIButton) {
    guard pickerView.superview == nil else {
        return
    }
    self.view.addSubview(pickerView)
    let viewsDictionary: [String: UIView] = ["pickerView": pickerView]
    view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[pickerView]-0-|", options: [], metrics: nil, views: viewsDictionary))
    view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[pickerView(0)]", options: [], metrics: nil, views: viewsDictionary)) // HEIGHT
    view.addConstraint(NSLayoutConstraint(item: pickerView, attribute: .centerY, relatedBy: NSLayoutConstraint.Relation(rawValue: 0)!, toItem: view, attribute: .centerY, multiplier: 1, constant: 0))
}

选择器视图

当按下 openPickerButtonPressed 按钮时,如何让 pickerView UIView 打开?

标签: swiftuiviewconstraintsinterface-buildervisual-format-language

解决方案


推荐阅读