创建自定义视图,在继承UIView之后,最关键的就是重写drawRect方法了。
这里暂不介绍具体怎样重写这个方法来实现想要的效果,重点介绍drawRect方法所带的CGRect类型的参数的作用。
drawRect接受的唯一参数就是"脏矩形",脏即需要更新的意思。这个参数给定的区域是self真正需要更新的区域。
顺便再说一下框架矩形(frame)和边界矩形(bounds)的区别。它们的类型都是CGRect,区别在于,frame定义了视图的大小和位置,这个位置是相对于父视图(superView)的;bounds则是视图相对于自身的坐标空间的位置和大小,这意味着origin的值一直都是(0.0,0.0)。这样一来,似乎边界矩形的存在没有任何意义,因为frame的size和bounds的size都是等同的,而且bounds的origin永远没有变化,那么我只需要知道frame值不就行了?其实不然,尽管边界矩形的size通常与框架矩形相同,但是在视图旋转的时候,框架矩形将改变大小和位置,而边界则保持不变。