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

标签 iphone ios uitableview uiview uiscrollview

我有一个带有 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/

    相关文章:

    iphone - 警告 : Unable to read symbols

    ios - 从代码中分离不起作用

    iphone - 核心显卡RGB数据问题

    iphone - 使用 AppDelegate 共享数据

    ios - 在 iOS 上加密 SQLite 数据库文件

    ios - 使用 SwiftUI 的 TextField 描边边框文本

    ios - Swift 相等需要 ObjectIdentifier 吗?

    ios - 如何删除 UITableView 中的箭头

    ios - 隐藏取消隐藏 UITableViewCell 背景

    ios - UITableview 单元格和标题间距