目标 C. ScrollView:每次用户滚动时如何强制它重绘可见部分?
Posted
技术标签:
【中文标题】目标 C. ScrollView:每次用户滚动时如何强制它重绘可见部分?【英文标题】:objective c. ScrollView: how to force it redraw visible part each time user scrolls? 【发布时间】:2011-04-02 18:10:19 【问题描述】:我在滚动视图中有自己的动态变化视图。
由于我的视野很大,我通常只重绘它的可见部分。
但是当我向上或向下滚动时,不会调用 drawRect 方法。
我猜滚动视图有一个缓冲区可以快速响应用户操作,但我不知道它是如何工作的确切机制。
更新
感谢 Wienke,我有一个解决方案:实现 UIScrollViewDelegate。
我已经实现了 scrollViewDidScroll 方法:
-(void) scrollViewDidScroll:(UIScrollView *)sender
CGRect visibleRect;
visibleRect.origin = [scrollView contentOffset];
visibleRect.size = [scrollView bounds].size;
[textField setNeedsDisplayInRect:visibleRect];
所以每次用户滚动一点,这个方法都会重绘整个可见部分。不好=(
我怎样才能只重绘...让我称之为“滚动后出现的新区域”。我想它要快得多......
感谢您的关注。
【问题讨论】:
这就是“setNeedsDisplayInRect”的“InRect”部分的用途。您的“visibleRect”变量应该是滚动视图内容视图的边界。 哇...我确信“InRect”正是将传递给drawRect的矩形:方法...。规则#1:永远不要确定-总是检查=)再次感谢 当您使用它时,请查看 Apple 的 View Programming Guide 中的“View Geometry”。您可以将现在发现的内容应用到许多其他情况。 【参考方案1】:您是否尝试过分配滚动视图委托? UIScrollViewDelegate 协议包括诸如 scrollViewDidEndDragging 之类的方法,您可以在这些方法上重绘。
【讨论】:
我想这会有所帮助,但我正在寻找一种方法来清理滚动视图的缓冲区。 是的!谢谢..您向我展示了正确的挖掘方向=)我使用了 scrollViewDidScroll - 它对我的问题更好。以上是关于目标 C. ScrollView:每次用户滚动时如何强制它重绘可见部分?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 scrollView 修复背景图像和使用 edittext 修复 textviews