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

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

概述我有一个xib文件表示一个自动布局的简单视图,我使用[[NSBundle mainBundle] loadNibNamed:@“name”] [0]实例化,并通过addSubview添加到以编程方式创建的UIView:. 问题在于,视图没有伸缩以满足其嵌入的视图的大小;而是似乎默认为xib文件中指定的大小. (我也找不到任何办法在xib文件中的容器视图本身设置约束,只有其子视图.) 还有一点奇怪的 我有一个xib文件表示一个自动布局的简单视图,我使用[[NSBundle mainBundle] loadNibnamed:@“name”] [0]实例化,并通过addSubvIEw添加到以编程方式创建的UIVIEw:.

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

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

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

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

旋转到肖像后:

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

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

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

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

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

总结

以上是内存溢出为你收集整理的ios – 嵌入在程序化UIView中的自动布局XIB不会调整为父级全部内容,希望文章能够帮你解决ios – 嵌入在程序化UIView中的自动布局XIB不会调整为父级所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1108511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存