- (void)drawRect:(CGRect)rect

针对自定义视图的- (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上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值