针对自定义视图的- (void)drawRect:(CGRect)rect:
其中参数rect指的是当前视图的bounds.要在自定义视图上重新画图的话一定注意 千万不要轻易用self.frame,因为此时self.frame是相对父视图的坐标系的!
注意:这个方法是不能手动调用的,因为图形上下文我们是无法创建的,只能由系统帮我们创建,并且传递给我们.
使用 [self setNeedDisplay]重绘的时候系统会创建与view关联的上下文,然后系统自已就会调用drawRect.
通常重写 model 的set 方法来实现 传递数据后 修改响应的属性
_image drawInRect 能保证图片绘制在父控件内部.如果_image drawAtPoint 极有可能超出边界.
如果是自己根据UIView重绘的UIImageView ,一定要注意重写
- (instancetype)initWithImage:(UIImage *)image
{
// 默认跟图片尺寸一样大
if (self = [super initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]) {
_image = image;
}
return self;
}.如果这里面不设置frame为image的size的宽高,那么alloc initWithImage的时候就永远没有设置frame 所以不能显示在UI上