我的contentInset财产有问题。我有一个UITableView, 具有动态单元格大小 (AutoLayout)。我正在设置该contentInset属性以在内容顶部上方留出一些空间。但我得到以下结果:
内容为蓝色,内容为紫色。当表格视图第一次出现时,它处于左边的情况。我可以滚动以找到正确的情况,这是有效的,但我希望表格视图直接出现在正确的插图中 - 我认为这将是默认行为。
我怎样才能做到这一点?
我已经将"加载"单元硬编码为我的表视图的最后一个单元格,当生成此单元时,我调用一些方法从Web服务加载新数据,当我收到响应时保存数据,发送通知并在我的表视图上调用reloadData.
我想做同样的事情,但我的桌子的第一个单元格.
我的表格与时间有关,因此向下滚动会显示以后日期中的项目,其目的是让用户滚动更高并加载更早的项目.
我似乎无法成功设置初始偏移量来隐藏此加载单元格,因为如果显示它,那么它将开始加载早期数据.我知道scrollToRowAtIndexPath:atScrollPosition:animated:但我找不到合适的地方来调用它(使用索引路径:1:0第1行第0节).
正如我之前提到的,我需要在调用任何单元格之前设置此可见部分.
有没有人在桌面视图的开头尝试过这种单元格?
如何在第一个单元格被加载之前设置表格视图的初始可见部分?
我应该在这里做些什么吗?就像有一个tableviewHeader,当显示时,我在索引路径0:0处插入一行,这是加载器,并在我reloadTable后删除它?
我试图从tableview重新加载一个特定的行,但在重新加载后,tableview的contentOffset被重置为(0,0).我试图添加[tableview beginUpdates]和重新加载[tableview endUpdates]reloadRowsAtIndexPaths,但没有改变行为.
问题在这里被问到调用reloadRowsAtIndexPaths删除tableView contentOffset但它没有解决问题.我很确定动画与此行为无关.我还不确定如何在重新加载tableview行的同时保持tableview的内容Offset.
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
我需要实时获取表格视图的滚动位置.我目前正在做的是:
func animationOffset() {
let offset = tableView.contentOffset.y
}
Run Code Online (Sandbox Code Playgroud)
此功能连接到计时器
timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(TimelineViewController.animationOffset), userInfo: nil, repeats: true)
Run Code Online (Sandbox Code Playgroud)
如果用户将手指从屏幕上抬起,此代码可以正常工作,但如果他们不这样做并继续滚动,则偏移将永远不会更新,我的应用程序将无法正常运行.
在下面的代码示例中self.contentView引用了相关UIScrollView问题.
// Scroll to bottom.
CGPoint bottomOffset = CGPointMake(0, self.contentView.contentSize.height -
self.contentView.bounds.size.height);
if (bottomOffset.y >= 0.0)
{
[self.contentView setContentOffset:bottomOffset animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,在iOS 6中,这非常好用,但在iOS 7中,滚动视图(假设它contentSize的垂直大于它frame.size.height)只滚动到添加到滚动视图的最底部子视图的最底部.
例如,如果以下情况适用:
self.contentView.frame.size.height == 50.0
self.contentView.contentSize.height == 100.0
aSubView.frame.origin.y == 50.0
aSubView.frame.size.height == 20.0
Run Code Online (Sandbox Code Playgroud)
滚动代码只会滚动直到aSubView可见; self.contentView.contentOffset.y == 20.0而不是self.contentView.contentOffset.y == 50.0在整个滚动视图的底部.
这是(当然)直到以编程方式添加另一个子视图self.contentView(通过用户交互),然后一切都自行纠正.
为清楚起见,我在滚动代码之前和之后设置断点来测量更改self.contentView.contentOffset.
其他有趣的事实,如果我直接删除animated并设置contentOffset它在iOS 7上按预期工作,但我更喜欢保持动画.
注意:不使用界面构建器
我想要一个ScrollView你可以在用户滚动时知道内容框架变化的地方(类似于didScrollUIKit 中的委托UIScrollView)。
这样,您就可以根据滚动行为执行布局更改。
ios ×4
uitableview ×4
objective-c ×3
swift ×2
uiscrollview ×2
cocoa-touch ×1
iphone ×1
macos ×1
reloaddata ×1
scrollview ×1
swiftui ×1
uikit ×1