我尽可能在我的UIView子类中使用setNeedsDisplayInRect:
,但我不知道drawRect:
中要做什么。检测UIView的哪些部分必须被绘制的最好方法是什么?现在我已经将我的UIView分成了几个CGRect
's。对于每个CGRect
,我打电话CGRectContainsRect()
检查是否需要绘制CGRect
。这是正确的方式,还是有更好的方法?在drawRect中部分绘制UIView的最有效方法:
2
A
回答
2
您正在查看经典的空间分区任务。根据您的视图复杂性,您可以使用不同的策略找出需要绘制的内容。如果你的场景很简单,那么绘制所有东西或将场景分割成不连续的区域,并进行边界矩形检查就可以了。对于非常复杂的场景,有几个很好的数据结构(如八叉树)用于将场景表示为树,并对给定区域内的对象执行空间查询。
退房空间分区的维基百科上的题目:http://en.wikipedia.org/wiki/Space_partitioning
3
你会想要绘制任何甚至部分在失效矩形中的矩形,所以你会想要使用CGRectIntersectsRect()
。话虽如此,我已经看到少数情况下部分绘制UIViews是有意义的 - 除非在滚动视图中有一个非常大的单个视图,否则您可以绘制整个视图。
相关问题
- 1. 无法在UIView中绘制UImage :: drawRect
- 2. drawRect方法不绘制
- 3. 在pieChart drawRect方法中绘制文本?
- 4. 最有效的方法来绘制silverlight
- 5. 在视图顶部绘制按钮的最有效方法?
- 6. 在UIView :: drawRect()之外绘制UIBezierPath?
- 7. UIView drawRect绘制宽度错误的线
- 8. 在没有drawRect的现有UIView上绘制线条/点?
- 9. 绘制分组boxplot matlab的最有效方法
- 10. UIView与多元DrawRect方法
- 11. 用的drawRect方法绘制 - 可可
- 12. 在OpenGL中绘制多个四边形的最有效方法
- 13. 在matlab中绘制一堆3d线的最有效方法
- 14. 在UIView中使用CoreGraphics绘制图像并在其上绘制文本drawRect
- 15. 重绘图像的最有效方法
- 16. iPhone - 我可以在drawRect中绘制一个UIView实例吗?
- 17. 如何用drawRect在UIView中绘制镜像UIImage?
- 18. UIView带选项的drawRect方法
- 19. 在屏幕顶部绘制最高效的方法(覆盖图层)。在.Net中?
- 20. 调用drawRect绘制CALayer的顶部?
- 21. 在opengl中绘制体素(立方体)的最有效方法是什么?
- 22. 在OpenGL ES中复制UIView drawRect
- 23. iPad - 在iPad中使用drawRect方法绘制旋转文本
- 24. 我可以在drawRect方法中绘制时访问视图吗?
- 25. 在iPad 2上绘制HTML5中粒子的最有效方式
- 26. 在NSView-drawRect:方法中绘制直线的首选/推荐方法是什么?
- 27. 在NSView中高效绘图drawRect
- 28. 什么是强制UIView重绘的最强大的方法?
- 29. 为多边形轮廓绘制圆圈的最有效方法
- 30. 绘制多个相同对象的最有效方法?
听起来你想要的东西瓷砖,你看着使用CATiledLayer呢?让它为你做平铺,然后画在图层上。 – jer 2010-10-20 14:46:33