美文网首页
如何高性能的给 UIImageView 加个圆角?

如何高性能的给 UIImageView 加个圆角?

作者: 0fbf551ff6fb | 来源:发表于2016-11-28 15:59 被阅读0次

    不好的解决方案

    使用下面的方式会强制Core Animation提前渲染屏幕的离屏绘制,而离

    屏绘制就会给性能带来负面影响,会有卡顿的现象出现

    self.view.layer.cornerRadius=5;

    self.view.layer.masksToBounds=YES;

    正确的解决方案:使用绘图技术

    - (UIImage*)circleImage

    {

    // NO代表透明

    UIGraphicsBeginImageContextWithOptions(self.size,NO,0.0);

    //获得上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    //添加一个圆

    CGRectrect = CGRectMake(0,0,self.size.width,self.size.height);

    CGContextAddEllipseInRect(ctx, rect);

    //裁剪CGContextClip(ctx);

    //将图片画上去

    [selfdrawInRect:rect];

    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();

    //关闭上下文UIGraphicsEndImageContext();

    return image;

    }

    还有一种方案:使用了贝塞尔曲线"切割"个这个图片,给UIImageView添加了的圆角,其实也是通过绘图技术来实现的

    UIImageView*imageView = [[UIImageViewalloc]

    initWithFrame:CGRectMake(0,0,100,100)];

    imageView.center= CGPointMake(200,300);

    UIImage*anotherImage = [UIImageimageNamed:@"image"];

    UIGraphicsBeginImageContextWithOptions(imageView.bounds.

    size,NO,1.0);

    [[UIBezierPathbezierPathWithRoundedRect:imageView.bounds

    cornerRadius:50] addClip];

    [anotherImage drawInRect:imageView.bounds];

    imageView.image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    [self.viewaddSubview:imageView];

    相关文章

      网友评论

          本文标题:如何高性能的给 UIImageView 加个圆角?

          本文链接:https://www.haomeiwen.com/subject/apuopttx.html