gpt4 book ai didi

ios - 具有自动布局的 UIScrollView 中的动态大小的 UITableView

转载 作者:可可西里 更新时间:2023-11-01 05:12:29 25 4
gpt4 key购买 nike

关于自动布局和 UIScrollViews 有一百万个问题,但我认为这是不同的东西。

我有一个看起来像这样的结构:

Resizing Example

白色背景是一个 UIView,它充当 UIScrollView 中的容器(获取 ScrollView 以构建其自己的内容大小的典型设置,以便它根据容器 View 正确滚动)。

TableView 1 和 TableView 2 的高度需要是动态的。我不希望它们滚动,所以我需要将它们的框架高度设置为等于它们的内容高度。

我有 IBOutlets 用于每个高度限制,并且可以毫无问题地调整它们。

当我尝试调整容器 View 的高度时出现问题。最终,我不想弄乱它并让该 View 根据其内容自动调整大小,但这似乎不起作用(如果我离开容器 View 的高度,我会在 IB 中收到警告/错误关于约束)。

如果我为容器 View 的高度约束创建一个导出并设置它,我会得到一个断言失败:

*** Assertion failure in -[UIView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8803

我正在像这样在 viewDidLayoutSubviews 中进行约束调整:

- (void)viewDidLayoutSubviews {
self.orderItemTableViewHeightConstraint.constant = self.orderItemTableView.contentSize.height - [self tableView:self.orderItemTableView heightForHeaderInSection:0];
self.shippingOptionTableViewHeightConstraint.constant = self.shippingMethodTableView.contentSize.height;
self.scrollViewContainerViewHeightConstraint.constant = self.cardInfoLabel.$bottom + 60;
}

我认为问题是设置容器 View 的高度约束导致一些递归或其他事情......

问题:

  1. 在这种情况下,是否有办法让容器 View 的高度根据其内容变化?
  2. 如果没有,我该如何以编程方式处理这个问题?我是不是在错误的地方更改了约束?

感谢任何输入!

最佳答案

好吧,这里只是散弹代码,但经过多次试验和错误后,这似乎解决了断言失败并给出了预期的结果:

- (void)viewDidLayoutSubviews {
self.orderItemTableViewHeightConstraint.constant = self.orderItemTableView.contentSize.height - [self tableView:self.orderItemTableView heightForHeaderInSection:0];
self.shippingOptionTableViewHeightConstraint.constant = self.shippingMethodTableView.contentSize.height;

[self.view layoutIfNeeded];

self.scrollViewContainerViewHeightConstraint.constant = self.cardInfoLabel.$bottom + 60;

[self.view layoutIfNeeded];
}

真的很想有更多的活力,但会在比赛的这个时候取得胜利!

希望这对其他人有帮助。

关于ios - 具有自动布局的 UIScrollView 中的动态大小的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273202/

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