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><UITableView: 0x7fb9a6ed8600; frame = (0 0; 300 132); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7fb9ae14cae0>; layer = <CALayer: 0x7fb9ad1b1540>; contentOffset: {0, 0}; contentSize: {300, 220}>
</code></pre>
<p>iOS8:</p>
<pre><code><UITableView: 0x7ff6e2d59800; frame = (0 0; 300 132); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7ff6e8726130>; layer = <CALayer: 0x7ff6e214b450>; contentOffset: {0, 0}; contentSize: {300, 132.5}>
</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]