更新时冻结UIScrollView的内容

时间:2014-04-10 21:59:21

标签: ios uiscrollview

我有一个UIView,在UIScrollView中可以看到CATiledLayer。

在某些时候,我需要相对于滚动视图原点重新定位窗口内容。

我需要更改滚动视图的contentOffset属性,但是当我重绘时,内容是相同的。

序列是

scrollView.contentOffset = newoffset ;
[contentView setNeedsDisplay]

当scrollView移动时,这会产生不稳定的效果。

有没有办法冻结滚动视图的可见区域,直到绘图完成?

基本上,我想

[FREEZE DISPLAY]     scrollView.contentOffset = newoffset; //但没有明显的变化     [contentView setNeedsDisplay]    [短暂延迟后无法显示]

1 个答案:

答案 0 :(得分:0)

您应该在UIScrollView的委托方法中执行此操作。它有一组非常具体的方法,您可以使用它们来适当地计算更新时间。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

在这三种方法之间,我确信其中一种方法会以您正在寻找的时间进行调用。

最后,请注意在使用这些代理时调用setNeedsDisplay方法的次数。如果你每隔一毫秒调用它,setNeedsDisplay在内存上并不便宜!

干杯