可视化 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()
。
问题很简单——我很喜欢用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()
。