iOS设置圆角的三种方式


1 方法一 通过设置layer的属性

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
//只需要设置layer层的两个属性
//设置圆角
imageView.layer.cornerRadius = imageView.frame.size.width / 2;
//将多余的部分切掉
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];

2 方法二 使用贝塞尔曲线UIBezierPath和Core Graphics框架画出一个圆角

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];imageView.image = [UIImage imageNamed:@"img"];//创建位图//参数二 NO 表示图形不使用透明//参数三 图像缩放比例为1.0UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0);//使用贝塞尔曲线画出一个圆形图[[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.frame.size.width] addClip];[imageView drawRect:imageView.bounds];//从上下文中获取图片imageView.image = UIGraphicsGetImageFromCurrentImageContext();//结束画图 关闭图形上下文UIGraphicsEndImageContext();[self.view addSubview:imageView];
2.1 UIGraphicsBeginImageContextWithOptions函数解析
函数原型为:
void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);
size——参数size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图形大小
opaque—透明开关,如果图形完全不用透明,设置为YES以优化位图的存储。
scale—–缩放因子 iPhone 4是2.0,其他是1.0。虽然这里可以用[UIScreen mainScreen].scale来获取,但实际上设为0后,系统就会自动设置正确的比例了。UIGraphicsBeginImageContext
创建一个基于位图的上下文(context),并将其设置为当前上下文(context)。方法声明如下:
void UIGraphicsBeginImageContext(CGSize size);
参数size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图形大小。
该函数的功能同UIGraphicsBeginImageContextWithOptions的功能相同,相当与UIGraphicsBeginImageContextWithOptions的opaque参数为NO,scale因子为1.0。

3 方法三 使用CAShapeLayer和UIBezierPath设置圆角

需要导入

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"img"];//定义绘制曲线路径
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:imageView.bounds.size];//初始化
CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
//设置大小
maskLayer.frame = imageView.bounds;
//设置绘制图形曲线
maskLayer.path = maskPath.CGPath;
//设置layer mask
imageView.layer.mask = maskLayer;
[self.view addSubview:imageView];

在每一View的layer层中有一个mask属性,他就是专门来设置该View的遮罩效果的。该mask本身也是一个layer层

IOS启程06—iOS设置圆角图片相关推荐

  1. IOS中设置圆角图片

    2019独角兽企业重金招聘Python工程师标准>>> ##iOS设置圆角的三种方式 <hr/> 1 方法一 通过设置layer的属性 UIImageView *imag ...

  2. iOS一个简单的设置圆角不引起性能问题的分类

    http://www.cocoachina.com/articles/18756 iOS设置圆角矩形和阴影效果 https://www.cnblogs.com/rayshen/p/4900336.ht ...

  3. iOS 中给view设置圆角头像(类似qq空间头像)

    view有一个属性layer,通过设置cornerRadius来设置圆角的半径,view是正方形的才能保证通过调整圆角半径来形成圆形头像 [view.layer setCornerRadius:CGR ...

  4. Android ImageView到底怎么设置圆角图片?背景圆角?控件圆角?图片圆角?占位图圆角?

    前言 在我们实际开发应用的过程中,我想大家或多或少都遇到过需要加载圆角图片的场景,还有一些图片是四周圆角不对称,异性圆角等等情况. 我们可能会去网上或Github上搜索一些RoundImageView ...

  5. Android之设置资源图片为圆角图片

    效果图: 参看以下代码: public class MainActivity extends Activity {private ImageView imageView1;private ImageV ...

  6. Flutter 圆角图片的几种实现

    Flutter 圆角图片的几种实现 圆角图片是 APP 开发中的常用设置,我们在 Flutter 中如何实现呢? 使用 ClipRRect 实现 第一种方式,直接使用 ClipRRect 实现,非常简 ...

  7. iphone屏幕圆角插件_关于iOS控件设置圆角的一些个人看法(iOS 10.0.2)

    写在最前面:该文章使用的机器是iPhone 6(iOS 10.0.2),得出的结果跟iOS 8和iOS 9不太一样,关于iOS 8和iOS 9的结论,在最后有. 这几天看简书上的文章,看到几篇关于控件 ...

  8. iOS LaunchScreen设置启动图片 启动页停留时间

    问题:想实现类似微信启动页一样 设置为一个整页面的图片 问题二:iOS启动页面如何设置多停留一会 新建的iOS 项目启动画面默认为LaunchScreen.xib 如果想实现一张图片作为启动页,如下图 ...

  9. iOS小技巧之圆角图片

    介绍 我们常常希望把用户头像做成圆形,怎么实现这种效果呢 实现 首先我们在视图中拖一个Image控件,设置好图片,做好代码关联 在viewDidLoad方法中实现圆角 override func vi ...

最新文章

  1. js创建对象的几种方法
  2. java从入门到入土_Java从入门到入土100天,第四天
  3. web移动端全屏滚动页面的适配问题
  4. python各种模块的使用
  5. 永洪Desktop关于MAC系统使用问题
  6. mysql事件计划自动_逐步讲解MySQL中定时事件计划的创建
  7. hello,你知道获取元素有哪几种方式吗?
  8. Linux下vim常用操作
  9. Java之注解的定义及使用
  10. 解决chrome浏览器adobe flash player不是最新版本亲测可用的方法
  11. python _winreg 操作注册表
  12. Linux小知识--通过MAC地址查询厂家OUI(成功率很高)
  13. 显示计算机程序的表格如何打开,如何设置打开excel表格的一个窗口显示多标签...
  14. 投影坐标系、大地坐标系(地理坐标系)
  15. epub直接获取书名及书封面
  16. 最新电脑CPU天梯图
  17. ndis拨号软件 linux,嵌入式linux系统下NDIS拨号
  18. HDOJ 1282 回文数猜想
  19. Qt程序开发通用框架
  20. 程序员健身总动员:写代码后你胖了几斤?

热门文章

  1. OpenCV vs Dlib 人脸检测比较分析
  2. 检测噪声大小的c语言程序,单片机课程设计(论文)_基于AT89C51的噪音检测自适应系统设计.doc...
  3. 游戏3d建模师的待遇及发展
  4. 顶尖学府 加州伯克利大学开发高效机器人操纵框架
  5. 上海纽约大学发布2019届毕业生就业报告,出国深造比高达67%
  6. opencv-4.5.3 + opencv_contrib-4.5.3 + vtk-9.0.3编译(全流程)
  7. 安装unzip_史上最详细的WordPress安装教程(六):安装WordPress
  8. 删除链表的倒数第n个节点 python_LeetCode 19.删除链表的倒数第N个节点(Python)
  9. linux 好用的 免费的 数据库管理工具 dbeaver
  10. cv_bridge 调用ros自带的opencv版本的解决