gpt4 book ai didi

ios - 嵌入编程 UIView 的自动布局 XIB 未根据父级调整大小

转载 作者:技术小花猫 更新时间:2023-10-29 10:46:14 30 4
gpt4 key购买 nike

我有一个 xib 文件,代表一个带有自动布局的简单 View ,我正在用 [[NSBundle mainBundle] loadNibNamed:@"name"][0] 实例化它并添加到以编程方式创建的UIView 通过 addSubview:

问题是 View 没有拉伸(stretch)以满足它嵌入的 View 的大小;相反,它似乎默认为 xib 文件中指定的大小。 (我也找不到任何方法来在 xib 文件中对容器 View 本身设置约束,只有它的 subview 。)

同样有些奇怪的是,当我旋转 iPad 时, View 的宽度会按比例进一步缩小。所以它显然以某种方式连接起来,但初始值错误。

要让这个嵌入式 View 正确适应 View 层次结构,我缺少什么连接?

屏幕截图(为调试添加了洋红色):

screenshot 1

旋转成纵向后:

screenshot 2

最佳答案

它不调整自身大小以填充其新 super View 的原因是您没有安排它这样做。简而言之,您需要在代码中添加约束,以便在将一个 View 添加到另一个 View 后关联两个 View 。

最有可能的是,IB 将 View 设置为将其自动调整掩码转换为约束。当它设置为使用自动布局时,很难从 NIB 确定它的自动调整掩码是什么。

无论如何,当您将它添加到父 View 时,自动生成的约束将保持其当前框架。当 superview 调整大小时,他们根据自动调整掩码调整它的大小(可能允许宽度和高度变化但不是到 superview 边缘的距离)。

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

  • 或者在 NIB 中关闭 translatesAutoresizingMaskIntoConstraints,或者在将其添加到 super View 的代码中关闭它。您采用哪种方法取决于您是否预计该 View 将作为管理其 subview 布局的框架 View 类的 subview 添加。如果可以,那么您应该在 NIB 中将其保持打开状态,让该类决定是否将其关闭。

  • 将 View 添加到其父 View 后,向父 View 添加约束以控制 View 的布局位置。

关于ios - 嵌入编程 UIView 的自动布局 XIB 未根据父级调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226608/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com