ios – 嵌入在程序化UIView中的自动布局XIB不会调整为父级

前端之家收集整理的这篇文章主要介绍了ios – 嵌入在程序化UIView中的自动布局XIB不会调整为父级前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个xib文件表示一个自动布局的简单视图,我使用[[NSBundle mainBundle] loadNibNamed:@“name”] [0]实例化,并通过addSubview添加到以编程方式创建的UIView:.

问题在于,视图没有伸缩以满足其嵌入的视图的大小;而是似乎默认为xib文件中指定的大小. (我也找不到任何办法在xib文件中的容器视图本身设置约束,只有其子视图.)

还有一点奇怪的是,当我旋转iPad时,视图的宽度进一步缩小.所以它显然是以某种方式连线,但错误的初始值.

我错过了什么连接来让这个嵌入视图适合视图层次结构?

截图(添加品红色调试):

旋转到肖像后:

解决方法

它没有调整自己以填补新的超级视图的原因是你没有安排这样做.简而言之,您需要在代码添加约束,将两个视图添加到另一个视图中.

IB最有可能设置将自动调整掩码转换为约束的视图.当它被设置为使用自动布局时,它的自动调整掩码可能很难从NIB确定.

无论如何,当您将其添加到超级视图中时,自动生成的约束将保持其当前帧.当超级视图调整大小时,它们会根据自动调整掩码来调整大小(可能允许宽度和高度变化,但不会超过与超级视图边缘的距离).

当您使用自动布局时,您应该执行以下操作:

>关闭在NIB中转换自动归档MaskIntoConstraints或将其添加到超级视图的代码中.您采用哪种方法取决于您是否期望视图将作为子视图来添加,该视图可以管理其子视图布局的框架视图类.如果可能的话,那么你应该把它留在NIB中,让该类决定是否关闭它.>将视图添加到其超级视图后,添加约束到超级视图,控制视图应在哪里布局.

猜你在找的iOS相关文章