gpt4 book ai didi

ios - (自动布局)容器 View 调整大小但 subview 不

转载 作者:可可西里 更新时间:2023-11-01 04:53:50 26 4
gpt4 key购买 nike

我在使用带有容器 View 的自动布局时遇到了一些问题(在这两种情况下:使用 ios5 中使用的 View 包含模式和一个简单的容器 View )。

我有一种自定义主从 Controller ,我可以在一些用户操作后调整左侧容器的大小,并且关联右侧 Controller 必须相应地调整大小以适应未使用的新空间。

对于“细节” Controller ,我使用 Xib 设置 Controller 并使用自动布局,我在其中有一些 View 。在视觉格式中,它们将是这样的:

  • V:|[headerView][contentView][footerView]|
  • H:|[headerViewW]
  • H:|[contentView]
  • H:|[页脚 View ]

这只是理解问题的一种表现形式。

如果我尝试调整细节 controller.view 框架的大小,它会正确展开,但 subview 不会。

在该 Controller 的 - (void)viewDidLayoutSubviews 方法中,我尝试手动设置框架并且有效,但我认为这不正确,因为我使用的是自动布局!

如果我有一个通用 View 和一个包含 ImageView 的 subview ,如果我使用自动布局从 xib 定义该 View ,如果我在设置 View 后运行时更改框架,则此问题会再次出现't 调整大小。

谁能帮帮我?

谢谢!

最佳答案

根据您对约束的描述,我认为所描述的行为正是您告诉它要做的。

请注意,您的水平约束要求 View 与其父 View 的左侧齐平。然而,它们并没有说明它们应该如何与父 View 的右侧相关联。因此,改变父 View 的宽度没有任何作用;它们只是与左侧尺寸保持齐平,并保持其内部约束提供的任何宽度。

如果您希望 View 随其父 View 调整大小,则需要在尾部添加约束。具体来说,您的约束可能如下所示:

H:|[headerView]|
H:|[contentView]|
H:|[footerView]|

或者您可能希望它们仅在父 View 太窄时收缩,否则不要一直延伸穿过它。那么你可以这样做:

H:|[headerView]-(>=10)-|
H:|[contentView]-(>=10)-|
H:|[footerView]-(>=10)-|

无论如何,您的问题的根源似乎是 View 没有以任何方式绑定(bind)到父 View 的右边缘,而且它也没有以任何方式绑定(bind)到它的宽度。添加这些约束应该可以解决问题。

关于ios - (自动布局)容器 View 调整大小但 subview 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883435/

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