我在向对方动态添加子视图时遇到了一些麻烦。也就是说,当我在界面构建器中构建了带有约束的视图,然后使用[view addSubview:subview]
时,它会破坏我设置的所有约束。
我尝试添加[subview setAutoresizingMask:NO];
以及subview.translatesAutoresizingMaskIntoConstraints = false;
我预计子视图对其原始父级的约束会被破坏,并在我调用addSubview
之后以编程方式将其添加回来,但我并不期望它的约束孩子们也会被打破。
不幸的是,添加子限制是不可行的。我们使用的架构是一个插件模型,虽然它很简单,可以从主UIViewController
调整插件的容器大小,但插件需要负责定位其内部元件。
这里是对事物应该如何看待的模拟:
现在看来是这样的:
如何让addSubview
维持这些内部约束?红色,绿色和蓝色框仅相互约束,而它们的父(紫色)都是addSubview
带来的。
答案 0 :(得分:0)
我尝试了太多方法,包括sizeToFit()并设置了translatesAutoresizingMaskIntoConstraints,但这没有用。您应该设置要添加为子视图的自定义视图的宽度,并且应该设置视图的sizeToFit()。它对我有用:
bigView.sizeToFit()
subView.sizeToFit()
subView.width = screenWidth
bigView.addSubview(subView)