gpt4 book ai didi

iphone - 缩放 UIScrollView contentSize 以适应内部具有可变高度 UITableView 的 UIView

转载 作者:行者123 更新时间:2023-12-01 18:02:18 27 4
gpt4 key购买 nike

我有一个带有 uiscrollview 的 uiview 作为 nib 中的 subview 。
然后,我加载另一个带有 uitableview 的 uiview 作为另一个 uiview 的 subview (在此 View 内的其他元素中)作为 uiscrollview 的 subview 。

即 UISCrollView -> UIView -> UITableView (以及 UIView 内部的一些其他 View )。

我需要执行以下操作:

一旦我知道了 tableview 的最终高度(取决于单元格的数量和它们的高度),我需要调整包含它的 uiview 的大小,然后调整包含 ScrollView 的 contentSize 属性的大小。

但我不知道tableview的最终大小在哪一点是已知的(因为它可以根据其单元格将容纳的文本量动态改变大小),我也不知道tableview会超过uiview多少(默认为 320 x 460)。

我尝试在 viewdidload 上将包含 tableview 的 View 设置为 900 的高度并将其设置为 sizeToFit,希望它会随着 tablecells 添加到 tableview 而缩小(假设添加单元格时 tableview 的框架会适本地缩放)。但这似乎不起作用。

有什么想法吗?
谢谢!

最佳答案

我刚刚遇到了类似的情况(UIScrollView -> UITableView)并且我的头撞了几个小时。简短的回答是:直到我的 ViewController(管理 UIScrollView)被发送 viewWillAppear: 之前,作为调整大小基础的正确尺寸才可用。 .在那之前,我发现这些值是设置的,但经常是错误的。 (例如,我第一次尝试这样做是在 viewDidLoad: 中,并且在那里更改了大小值,但它们是错误的!)

所以我的解决方案是:

  • viewDidLoad:使您封闭的 UITableView 为 reloadData一旦你的数据到位。
  • viewWillAppear:执行以下操作(假设 tableView 是封闭的 UITableView,scrollView 是封闭的 UIScrollView):
    tableView.frame = (CGRect){ 
    tableView.frame.origin,
    tableView.contentSize
    };
    // Finally, set content size based on the last element in the scrollView
    // in my case, the last element IS the tableView, yours might be different
    scrollView.contentSize =
    CGSizeMake(scrollView.width
    - scrollView.contentInset.left
    - self.scrollView.contentInset.right,
    tableView.top
    + tableView.height);

  • 注意,当我在 viewWillAppear: 之前检查它们时,我得到了一些非常奇怪的数字。 ;例如,tableView.contentSize 似乎是默认 rowHeight * 行数的乘积,忽略了我的自定义行高并排除了任何分隔符!很奇怪。

    关于iphone - 缩放 UIScrollView contentSize 以适应内部具有可变高度 UITableView 的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7508517/

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