gpt4 book ai didi

ios - 自动布局,UiScrollView 内的 UITableView 不会增长

转载 作者:行者123 更新时间:2023-11-29 11:35:35 25 4
gpt4 key购买 nike

我的 Storyboard上有这个结构(我添加了一些示例名称以便于理解):

  • UIView(主视图)“BlackView”

    -UIScrollView(在主视图内)“OrangeView”

    • UIView “YelloView”(主滚动条内的 ContentView)
      • UITableView “BluView”(在 contentView 内部和顶部)
      • UIView “RedView”(在 ContentView 内部,与 UITableview 同级)

我想达到什么目的?我想要一个与他的行数成比例增长的表(行高固定为 60)。我还想要一个 UIScrollview,它的 content_size 和滚动能力根据 BlueView 和 RedView 的高度总和而增长。

自动布局约束是:

UiScrollView "OrangeView":(顶部 0,尾部 0,底部 0,前导 0)

UIView "YelloView": (top 0, trailing 0, bottom 0, leading 0) (与 main 等宽 ed 与 main "BlackView"等高,底部优先级“低”)

UITabelView "BluView":(前 0,后 0,前 0)

UIView“RedView”:(垂直空间 2 到“BluView”,尾随 0,前导 0,底部 0 到 YelloView)

我有一个完整的约束链,从 View 的顶部到底部。 UITableView 可以自由增长,因为我没有直接设置他的“高度”约束并且 uitableview setscrollingenabled 是 FALSE。结果是一个不增长的 TableView 。

我可以通过代码生成增长:

Table.frame=CGRectMake(BluView.frame.origin.x, BluView.frame.origin.y, BluView.frame.size.width, BluView.contentSize.height);

我工作了,表格框架和“OrangeView”滚动 content_size 正确增长,但“RedView”没有响应这个框架变化,也没有移动到距离的新“表格底部”广告 2。

我已经尝试刷新约束系统:

    [BlackView layoutIfNeeded];
[BlackView setNeedsUpdateConstraints];
[RedView layoutIfNeeded];
[ScrollContainer layoutIfNeeded];
[RedView layoutIfNeeded];
[RedView setNeedsUpdateConstraints];
[OrangeView setNeedsUpdateConstraints];
[RedView updateConstraints];
[OrangeView updateConstraints];
[BlackView updateConstraints];
[BluView setTranslatesAutoresizingMaskIntoConstraints:NO];
[RedView setTranslatesAutoresizingMaskIntoConstraints:NO];

我在适当的框架更改前后调用了这些方法,它们不会刷新 RedView 的 y 位置。我如何获得所需的行为?有一种方法可以创建另一种类型的“约束树”,或者在我以编程方式更改 Tableview 框架后,是否有另一种方法可以刷新 RedView 的位置?

最佳答案

UITableView is free to grow because i haven't set directly his "height" constraint and uitableview setscrollingenabled is FALSE.

setscrollingenabled 设置为 false 不会告诉 tableView 具有其内容的高度,它只是禁用滚动行为。因此,如果您的 tableView 高 200pt 而内容为 500pt,那么您将永远看不到底部的 300pt。

在每次 contentSize 更改时,向您的 tableView 添加高度约束并使用 tableView 的 contentSize.height 更新其常量。这样它将始终具有其内容的大小,并且因为它在 scrollView 中,您仍然可以滚动以查看所有内容。

PS:如果黄色 View 只是蓝色和红色 View 的容器,那么它在这里是无用的。

关于ios - 自动布局,UiScrollView 内的 UITableView 不会增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49560020/

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