iOS中设置view圆角化的四种方法示例

发布时间 - 2026-01-11 03:13:08    点击率:

前言

在最近进行项目性能优化的过程中,遇到view圆角优化的问题,有一些粗略的看法,现总结一下。分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

设置圆角目前知道的有四种方法:

     1、通过shapeLayer设置

     2、通过view的layer设置

     3、通过BezierPath设置

     4、通过贴图的方式设置

1、shapeLayer的实现

通过bezizerpath设置一个路径,加到目标视图的layer上。代码如下:

// 创建一个view
 UIView *showView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
 [self.view addSubview:showView];
 showView.backgroundColor = [UIColor whiteColor];
 showView.alpha = 0.5;
 
 // 贝塞尔曲线(创建一个圆)
 UIBezierPath *path = [UIBezierPath  bezierPathWithArcCenter:CGPointMake(100 / 2.f, 100 / 2.f)
              radius:100 / 2.f
              startAngle:0 
              endAngle:M_PI * 2
              clockwise:YES];
 
  CAShapeLayer *layer = [CAShapeLayer layer];
  layer.frame = showView.bounds;
  layer.path = path.CGPath;
  [showView.layer addSublayer:layer];

2、view的layer的实现

通过view的layer直接设置的方式,是所有的方法中最简单的,代码如下:

 - (UIImageView *)avatarImage { 

  if (!_avatarImage) { 
  
  _avatarImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,10, avatarDiameter, avatarDiameter)];
  _avatarImage.backgroundColor = [UIColor grayColor];
  _avatarImage.contentMode = UIViewContentModeScaleAspectFit;
  _avatarImage.layer.cornerRadius = avatarDiameter/2.0;
  _avatarImage.layer.masksToBounds = YES;
  [_avatarImage setImage:[UIImage imageNamed:@"test.jpg"]];
  }
 return _avatarImage;
}

3、BezierPath的实现

BezierPath的实现方式继承UIView,自己实现一个customview,代码如下。

- (instancetype)initWithFrame:(CGRect)frame {
 
 if (self = [super initWithFrame:frame]) {
  
 }
 return self;
}
- (void)drawRect:(CGRect)rect { 
  // Drawing code 
 CGRect bounds = self.bounds;
 [[UIColor whiteColor] set];
 UIRectFill(bounds);

 [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:CGRectGetWidth(bounds)/2.0] addClip];
 [self.image drawInRect:bounds];
} 

4、贴图的实现

贴图的方式是使用一个中间是圆形镂空的图覆盖在需要圆角化的图片的上方。代码如下:

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
 
  if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
  
   [self.contentView addSubview:self.avatarImage];
   [self.contentView addSubview:self.maskImage];
  }
  return self;
 }

- (UIImageView *)avatarImage {
 
  if (!_avatarImage) { 
  
  _avatarImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,10, avatarDiameter, avatarDiameter)];
  _avatarImage.backgroundColor = [UIColor grayColor];
  _avatarImage.contentMode = UIViewContentModeScaleAspectFit;
   [_avatarImage setImage:[UIImage imageNamed:@"test.jpg"]];
  }
  return _avatarImage;
 }

 //中心镂空的图
 - (UIImageView *)maskImage { 
 
  if (!_maskImage) { 
  
  _maskImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,10, avatarDiameter, avatarDiameter)]; 
  _maskImage.contentMode = UIViewContentModeScaleAspectFit; 
  [_maskImage setImage:[UIImage imageNamed:@"corner_circle.png"]]; 
  }
  return _maskImage;
} 

如果大家有什么好的方法,希望推荐给我。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


# ios  # view圆角  # view设置圆角  # view切圆角  # iOS应用开发中UIView添加边框颜色及设置圆角边框的方法  # IOS设置按钮为圆角的示例代码  # iOS设置圆角的三种方式  # IOS设置UIView的边框为圆角详解及实例  # iOS中设置圆角的几种方法示例  # iOS设置圆角的三种方法  # iOS设置可选择圆角方向的控件圆角  # iOS设置圆角的4种方法实例(附性能评测)  # 圆角  # 创建一个  # 有什么  # 给我  # 说了  # 不多  # 有一定  # 这篇文章  # 四种  # 谢谢大家  # 最简单  # 过程中  # 塞尔  # 有疑问  # alpha  # UIBezierPath  # UIColor  # addSubview  # backgroundColor  # whiteColor 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深圳防火门网站制作公司,深圳中天明防火门怎么编码?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何在阿里云通过域名搭建网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  深圳网站制作培训,深圳哪些招聘网站比较好?  Android利用动画实现背景逐渐变暗  php485函数参数是什么意思_php485各参数详细说明【介绍】  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  python中快速进行多个字符替换的方法小结  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何确保FTP站点访问权限与数据传输安全?  Python文本处理实践_日志清洗解析【指导】  Python3.6正式版新特性预览  昵图网官网入口 昵图网素材平台官方入口  原生JS获取元素集合的子元素宽度实例  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  七夕网站制作视频,七夕大促活动怎么报名?  如何快速重置建站主机并恢复默认配置?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel如何配置任务调度?(Cron Job示例)  如何在阿里云完成域名注册与建站?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  香港服务器网站卡顿?如何解决网络延迟与负载问题?  利用JavaScript实现拖拽改变元素大小  php json中文编码为null的解决办法  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  音响网站制作视频教程,隆霸音响官方网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何用好域名打造高点击率的自主建站?  Laravel怎么在Blade中安全地输出原始HTML内容