UITableView contentInset 的动画不一致

Posted

技术标签:

【中文标题】UITableView contentInset 的动画不一致【英文标题】:Inconsistent animation for UITableView contentInset 【发布时间】:2011-11-06 06:49:08 【问题描述】:

谁能帮忙解决一个我不知道的动画问题。我在“拉动刷新”中实现了以下代码。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
[UIView commitAnimations];

这个方法也在 viewDidAppear: 中被调用,这就是我的问题所在。在应用程序的初始加载时,它工作得很好。但是,当视图在弹出视图或关闭模式视图后出现时,它不会动画。我之前和之后都设置了断点,所以我知道它被调用了,但没有动画。我还尝试了其他动画来代替 contentInset,它们工作正常。最重要的是,如果我将内容插图更改为负数,它在初始加载时不起作用,但在所有其他情况下都可以正常工作(但显然是在相反的方向移动)。

非常感谢任何帮助

【问题讨论】:

【参考方案1】:

所以,我列出的动画代码似乎仍然很奇怪,但至少我的目的是通过添加来实现

if (feedTableView.contentOffset.y < 100 && feedTableView.contentOffset.y >= 0)
    [feedTableView setContentOffset:CGPointMake(0, -50) animated:YES]; 

到底部。这样,如果当视图出现时 tableView 当前接近顶部,则 contentInset 将更改为包含“正在加载”标题,然后 tableView 滚动到该标题的顶部。

【讨论】:

以上是关于UITableView contentInset 的动画不一致的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在 contentInset 之后不滚动

ContentInsets 不适用于 UITableView

UITableView 调整 contentinset 直到第一次滚动

iOS 7 中 UITableView 的 contentInset 规则?

通过 contentInset 属性添加边距在 iPad 上居中 UITableView?

更改 UITableView 的 contentInset 而不更改其 contentOffset?