我有一个带有自定义draw(_ rect: CGRect)方法的UIView,它可以工作。
但是,当我将其放置在UIStackView中时,不会调用其绘制方法。UILabel或UIImage在同一堆栈视图中正常显示。
在界面生成器中,它甚至在堆栈视图中绘制,但在设备上运行时,它不是。
draw(_ rect: CGRect)
不会调用stack
addArrangedSubview
。相反,您可以将代码放入 layoutSubviews
.
通过首先添加一个包装器视图来解决它,然后将其添加到 UIStackView 后,我将我的自定义绘图视图添加到包装器视图中。(这是用 C# 编写的,但我很确定它无论如何都会有所帮助)
UIView wrapperView = new UIView(f);
CanvasStackView.AddArrangedSubview(wrapperView);
CGRect f = new CGRect(CGPoint.Empty,new CGSize(CanvasStackView.Frame.Size.Width, height));
MyCustomView b = new MyCustomView(f);
wrapperView.AddSubview(b);
我遇到了同样的问题。检查视图的约束。我添加了前导/尾随空格和高度来解决此问题。