可视化 UIStackView?

Visualizing UIStackView?

问题很简单——我很喜欢用UIStackView来组织UI。但是,我在测试应用程序中看不到 UIStackView 边界。当 UI 元素不是预期的时候,我需要花很多时间来调试。在网上搜索,我找不到显示 UIStackView 边界的方法。

您是否尝试过单击调试栏中的 调试视图层次结构 按钮?

请参考这个(来自Apple):Specialized Debugging Workflows

我会使用 Xcode 的“调试视图层次结构”支持,如 ferunandu 的回答所示。这是最简单的方法,因为 UIStackView 是专门 而不是 来渲染任何图形本身(通过使用 CATransformLayer 作为其图层)。

但是有办法在运行时查看堆栈视图的“边界”。只需添加另一个视图(视图层次结构中的任何位置),并将其约束为与堆栈视图具有相同的框架。您可以在故事板或代码中执行此操作。以下是您在代码中的实现方式:

extension UIStackView {

    func showBoundary() {
        let boundary = UIView()
        boundary.layer.borderColor = UIColor(red: 0.8, green: 0.5, blue: 1, alpha: 0.5).CGColor
        boundary.layer.borderWidth = 1
        boundary.backgroundColor = nil
        boundary.frame = self.bounds
        boundary.autoresizingMask = [ .FlexibleWidth, .FlexibleHeight ]

        addSubview(boundary) // Note: **not** addArrangedSubview!
    }

}

然后在堆栈视图上调用 stackView.showBoundary()