Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios addSubview破坏内部约束_Ios_Objective C_Uiview_Autolayout - Fatal编程技术网

Ios addSubview破坏内部约束

Ios addSubview破坏内部约束,ios,objective-c,uiview,autolayout,Ios,Objective C,Uiview,Autolayout,我在动态地向彼此添加子视图时遇到一些问题。也就是说,当我在interface builder中构建了一个带有约束的视图,然后使用[view addSubview:subview]时,它会销毁我设置的所有约束 我已经尝试添加[subview setAutoresizingMask:NO]以及subview.translatesAutoresizingMaskIntoConstraints=false 我预计子视图对其原始父视图的约束将被破坏,并在调用addSubview后以编程方式将它们重新添加,

我在动态地向彼此添加子视图时遇到一些问题。也就是说,当我在interface builder中构建了一个带有约束的视图,然后使用
[view addSubview:subview]
时,它会销毁我设置的所有约束

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

我预计子视图对其原始父视图的约束将被破坏,并在调用
addSubview
后以编程方式将它们重新添加,但我没想到其子视图的约束也会被破坏

不幸的是,重新添加子约束是不可行的。我们使用的架构是一个插件模型,虽然从主
UIViewController
调整插件容器的大小非常简单,但插件需要负责定位其内部元素

下面是一个事物应该是什么样子的模型:

下面是它目前的样子:


如何获取
addSubview
以维护这些内部约束?红色、绿色和蓝色框仅限于彼此和它们的父框(紫色),它们都是通过
addSubview

实现的。我尝试了太多的方法,包括sizeToFit()和设置translatesAutoReshizingMaskintoConstraints,但都不起作用。您应该设置要添加为子视图的自定义视图的宽度,并且应该设置视图的sizeToFit()。这对我很有用:

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

将View1添加为子视图时,如何定义其大小和位置?您正在使用约束吗?如果是,您要添加什么约束?其宽度、前导和顶部与新的父级绑定(宽度相等,其他为0)。高度是静态的。内部约束不应该丢失(我尝试时不会丢失)。您应该将TranslatesAutoResizengMaskintoConstraints设置为false,这样就可以了。我认为您必须更明确地说明您有哪些约束,因此显示如何加载和添加此视图的完整代码,以及您添加的约束。