【发布时间】:2015-03-11 19:21:23
【问题描述】:
我在动态添加子视图时遇到了一些麻烦。也就是说,当我有一个在界面构建器中内置约束的视图然后使用[view addSubview:subview] 时,它会破坏我设置的所有约束。
我尝试添加[subview setAutoresizingMask:NO]; 和subview.translatesAutoresizingMaskIntoConstraints = false;
我预计子视图对其原始父级的约束会被破坏,并在我调用addSubview 后以编程方式将它们添加回来,但我没想到它的子视图的约束也会被破坏。
不幸的是,重新添加子约束是不可行的。我们使用的架构是插件模型,虽然从主 UIViewController 调整插件容器的大小很简单,但插件需要负责定位其内部元素。
以下是事物外观的模型:
这是它目前的样子:
我怎样才能获得addSubview 来维护这些内部约束?红色、绿色和蓝色框仅相互约束以及它们的父级(紫色),它们都通过addSubview 实现。
【问题讨论】:
-
当您将 View1 添加为子视图时,您如何定义其大小和位置?你在使用约束吗?如果是这样,您要添加哪些约束?
-
它的宽度、前导和顶部与它的新父级绑定(宽度相等,其他为 0)。高度是静态的。
-
不应丢失内部约束(我尝试时不会丢失)。您应该将 translatesAutoresizingMaskIntoConstraints 设置为 false,这样就可以了。我认为你必须更明确地说明你有什么约束,所以显示你如何加载和添加这个视图的整个代码,以及你添加的约束。
标签: ios objective-c uiview autolayout