addSubview打破内部约束

时间:2015-03-11 19:21:24

标签: ios objective-c uiview autolayout

我在向对方动态添加子视图时遇到了一些麻烦。也就是说,当我在界面构建器中构建了带有约束的视图,然后使用[view addSubview:subview]时,它会破坏我设置的所有约束。

我尝试添加[subview setAutoresizingMask:NO];以及subview.translatesAutoresizingMaskIntoConstraints = false;

我预计子视图对其原始父级的约束会被破坏,并在我调用addSubview之后以编程方式将其添加回来,但我并不期望它的约束孩子们也会被打破。

不幸的是,添加子限制是不可行的。我们使用的架构是一个插件模型,虽然它很简单,可以从主UIViewController调整插件的容器大小,但插件需要负责定位其内部元件。

这里是对事物应该如何看待的模拟: How it should look

现在看来是这样的: How it actually looks

如何让addSubview维持这些内部约束?红色,绿色和蓝色框仅相互约束,而它们的父(紫色)都是addSubview带来的。

1 个答案:

答案 0 :(得分:0)

我尝试了太多方法,包括sizeToFit()并设置了translatesAutoresizingMaskIntoConstraints,但这没有用。您应该设置要添加为子视图的自定义视图的宽度,并且应该设置视图的sizeToFit()。它对我有用:

bigView.sizeToFit()
subView.sizeToFit()
subView.width = screenWidth
bigView.addSubview(subView)