drawRect的rect!= self.frame时的条件

时间:2009-08-20 05:37:04

标签: iphone objective-c uiview drawing

我有一个UIView子类,我正在做一些自定义绘图。当drawRect:(CGRect)rect被调用时rect.size是(64,63)或(63,64); self.frame.size是(64,64)。

我有这个子类的多个实例,其中大多数都获得drawRect参数的预期(64,64)大小。

哪些条件可能导致某些子类具有修改的drawRect边界而不是其他子类?

其他花絮:

  • self.opaque is NO
  • self.transform确实有所不同;我使用它以90度为增量旋转UIView,但是对于rect.size
  • 的后续调用,旋转视图不会更改drawRect

1 个答案:

答案 0 :(得分:12)

传递给drawRect的rect是系统要求你在视图坐标系中绘制(rectRect)的矩形。

它可以是self.bounds,也可以是不同的矩形。

通常,您应该忽略参数并在self.bounds中绘制自己,除非您的绘图非常复杂。注意传入的dirtyRect参数是一个优化,在您分析应用程序并确定它是热点之前,应该忽略该优化。