菜鸟教程小白 发表于 2022-12-13 14:53:25

ios - iOS8 和 iOS9 中的 UITableView contentSize 计算方式不同?


                                            <p><p>我正在使用下面的代码来强制 uitableview “对齐行”:</p>

<pre><code>- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    // if decelerating, let scrollViewDidEndDecelerating: handle it
    if (decelerate == NO) {
      ;
    }
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    ;
}

- (void)centerTable {
    NSIndexPath *pathForCenterCell = ;

    ;
}
</code></pre>

<p>它在 iOS9 中运行良好,但在 iOS8 中,表格 View 不允许我捕捉到第一行或最后一行。如果我在索引路径计算之后在 <code>centerTable</code> 中放置一个断点,我会为表格 View 得到这个:</p>

<p>iOS9:</p>

<pre><code>&lt;UITableView: 0x7fb9a6ed8600; frame = (0 0; 300 132); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = &lt;NSArray: 0x7fb9ae14cae0&gt;; layer = &lt;CALayer: 0x7fb9ad1b1540&gt;; contentOffset: {0, 0}; contentSize: {300, 220}&gt;
</code></pre>

<p>iOS8:</p>

<pre><code>&lt;UITableView: 0x7ff6e2d59800; frame = (0 0; 300 132); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = &lt;NSArray: 0x7ff6e8726130&gt;; layer = &lt;CALayer: 0x7ff6e214b450&gt;; contentOffset: {0, 0}; contentSize: {300, 132.5}&gt;
</code></pre>

<p>请注意,除了 contentSize 之外,一切都是一样的。这导致与 iOS9 相比,iOS8 中的索引路径为 <code>n+1</code>。</p>

<p>那么,为什么在 iOS8 系统中 contentSize 的计算方式不同???解决方法是什么?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>虽然我不明白为什么 <code>contentSize</code> 不同,但这里是我针对准确居中问题的解决方法:</p>

<pre><code>- (void)centerTableViewAnimated:(BOOL)animated {
   NSIndexPath *centerCellIndexPath = ;

   CGPoint contentOffset = CGPointMake(0, (centerCellIndexPath.row * self.tableView.rowHeight) - ((self.tableView.frame.size.height / 2) - (self.tableView.rowHeight / 2)));

   ;
}
</code></pre>

<p>所以基本上,我没有尝试使用 <code>scrollToRowAtIndexPath</code>,而是直接设置 <code>contentOffset</code>(您可以对其进行动画处理,这很好)。这似乎在 iOS 8 和 iOS 9 上运行良好。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - iOS8 和 iOS9 中的 UITableView contentSize 计算方式不同?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35589811/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35589811/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - iOS8 和 iOS9 中的 UITableView contentSize 计算方式不同?