我有一个UIView,在UIScrollView中可以看到CATiledLayer。
在某些时候,我需要相对于滚动视图原点重新定位窗口内容。
我需要更改滚动视图的contentOffset属性,但是当我重绘时,内容是相同的。
序列是
scrollView.contentOffset = newoffset ;
[contentView setNeedsDisplay]
当scrollView移动时,这会产生不稳定的效果。
有没有办法冻结滚动视图的可见区域,直到绘图完成?
基本上,我想
[FREEZE DISPLAY] scrollView.contentOffset = newoffset; //但没有明显的变化 [contentView setNeedsDisplay] [短暂延迟后无法显示]
答案 0 :(得分:0)
您应该在UIScrollView
的委托方法中执行此操作。它有一组非常具体的方法,您可以使用它们来适当地计算更新时间。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
在这三种方法之间,我确信其中一种方法会以您正在寻找的时间进行调用。
最后,请注意在使用这些代理时调用setNeedsDisplay
方法的次数。如果你每隔一毫秒调用它,setNeedsDisplay
在内存上并不便宜!
干杯