• iOS常见用户头像的圆形图片裁剪常见的几种方法


    在开发中,基本上APP的用户头像的处理都需要把用户所上传的方形图片,处理为圆形图片.在这里就总结三种常见的处理圆形图片的方法.

      1.使用位图上下文

      2.使用UIView的layer进行处理

      3.使用runtime进行处理

    (1)使用位图上下文

      注意点: 1)使用位图上下文所得到的image是一张全新的图片,并不是原来的那张图片

                     2)该方法是先设置裁剪区域,裁剪的后设定裁剪区域后,画上去的图片有效.对设定裁剪区域之前没有作用

              UIImage *image = [UIImage imageNamed:@"picture"];

                  //1.开启一个位图上下文(大小跟图片一样大)

                   UIGraphicsBeginImageContext(image.size);

        

                 //2.做裁剪.(对之前已经画上去的东西,不会有做用.)

           //2.1 bezierPathWithOvalInRect方法后面传的Rect,可以看作(x,y,width,height),前两个参数是裁剪的中心点,后面两个决定裁剪的区域是圆形还是椭圆.

                  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

                //把路径设置为裁剪区域(超出裁剪区域以外的内容会自动裁剪掉.)

                 [path addClip];

        

                 //3.把图片绘制到上下文当中

                  [image drawAtPoint:CGPointZero];

                  //4.从上下文当中生成一张图片

                  UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

                 //5.关闭上下文

                   UIGraphicsEndImageContext();

           //6.把图片显示出来

                  self.imageView.image = newImage;

    2. 第二种方法就是使用图层,还叫做根层.

        

            //设置圆角

                      self.imageV.layer.cornerRadius = 20;

            //超出根层以久的内容给裁剪掉.

                   self.imageV.layer.masksToBounds = YES;

           //    self.imageV.clipsToBounds = YES;

        //masksToBounds 和 clipsToBounds都能实现,但clipsToBounds的底层调用的是masksToBounds

    3.使用runtime

           设置图片的圆角半径,只需要在storyboard或者xib中找到你需要设定圆角半径的imageView;点击;

         如图一样设置

    位图上下文 和 图层的区别: 使用位图上下文进行图片裁剪,功能更加强大,能指定任意中心点,裁剪的图形发挥空间较大,有圆形和椭圆形. 使用图层(核心动画)更加简单,但更加消耗性能,iOS9之前在tableView中的cell中使用,会造成tableView卡顿,经过博主测试,iOS9之后应该苹果做了处理,不会造成卡顿了.

  • 相关阅读:
    Java基础-3y
    对线面试官面试系列-3y
    从零单排学Redis【青铜】
    mock官方文档
    route路由组件传递参数
    axios拦截器与vue代理设置
    Sass使用方法
    Less使用方法
    Vue-cli
    Vue-组件注册
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/5995082.html
Copyright © 2020-2023  润新知