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

fbr*_*eto 4 iphone drawing objective-c uiview

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

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

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

额外的花絮:

  • self.opaque是NO
  • self.transform确实有所不同; 我使用它以90度的增量旋转UIView,但旋转视图不会rect.size在下次调用时改变drawRect

Pet*_*wis 12

传递给drawRect的rect是系统要求您在视图坐标系中绘制(dirtyRect)的矩形.

它可以是self.bounds,也可以是不同的rect.

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