iOS中无卡顿同时使用圆角、阴影和边框的实现
这篇文章主要介绍iOS中无卡顿同时使用圆角、阴影和边框的实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
在 iOS 开发中,最怕看到设计稿里圆角、阴影和边框同时出现,这三兄弟简直就是性能杀手。
优化的方法百度一下有很多,虽然方法不同但是原理都一样。
分享一个我自己一直使用的方法:在一个 View 里只应用一种效果,然后通过组合的方式达到效果。
overrideinit(frame:CGRect){ super.init(frame:frame) imageView=UIImageView(image:UIImage(named:"img")) imageView.layer.cornerRadius=14 imageView.layer.masksToBounds=true backgroundView=imageView shadowView=ShadowView() shadowView.layer.cornerRadius=20 shadowView.applyShadow(.black,CGSize(width:0,height:15),0.2,40) insertSubview(shadowView,belowSubview:imageView) contentView.layer.cornerRadius=14 contentView.layer.borderWidth=1 contentView.layer.borderColor=UIColor.orange.cgColor contentView.layer.masksToBounds=true }
层次结构:
contentView: 描绘边框,放在最上层。
imageView: 显示圆角,放在中间,用于背景图。
shadowView: 显示阴影,放在最底层。代码很简单,只是封装了一下阴影参数:
classShadowView:UIView{ privatevarshadowColor:UIColor? privatevarshadowOpacity:CGFloat=1 privatevarshadowOffset:CGSize=CGSize(width:0,height:3) privatevarshadowBlur:CGFloat=6 overridefunclayoutSubviews(){ super.layoutSubviews() updateShadow() } funcapplyShadow(_color:UIColor?,_offset:CGSize,_opacity:CGFloat,_blur:CGFloat){ shadowColor=color shadowOffset=offset shadowOpacity=opacity shadowBlur=blur updateShadow() } privatefuncupdateShadow(){ layer.shadowColor=shadowColor?.cgColor layer.shadowOffset=shadowOffset layer.shadowOpacity=Float(shadowOpacity) layer.shadowRadius=shadowBlur*0.5 layer.shadowPath=UIBezierPath(roundedRect:self.bounds,cornerRadius:layer.cornerRadius).cgPath } }
分开单独绘制速度很快,使用 UICollectionView 进行滚动测试,生成的 Cell 数量是 1 万个。
测试机器是 5s + iOS 12.4.4,快速滑动无任何卡顿。
以上是“iOS中无卡顿同时使用圆角、阴影和边框的实现”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
Xcode 15 新特性解析:SwiftUI 预览优化与 iOS 真机调试流程简化
-
Xcode 编译耗时过长?5 个技巧加速 iOS 项目构建与打包流程
-
能在ios上虚拟windows吗
近期有些网友想要了解能在ios上虚拟windows吗的相关情况,小编通过整理给您分享一下。iOS设备运行Windows的可能性许多...
-
ios14系统怎么用nfc(ios 14新增的nfc功能怎么用)
ios14新增的nfc功能怎么用?1.打开iPhone后,选择手机的[设置]图标。2.进入后,点击【通用】选项进入。3.单击并选...
-
微信小程序iOS端怎么暂停animated动画
微信小程序iOS端怎么暂停animated动画这篇“微信小程序iO...
-
iOS中多线程的示例分析
iOS中多线程的示例分析这篇文章给大家分享的是有关iOS中多线程的...
-
ios启动私有链查询区块信息的方法是什么
ios启动私有链查询区块信息的方法是什么本篇内容介绍了“ios启动...
-
正则表达式在ios中怎么用
正则表达式在ios中怎么用这篇文章主要为大家展示了“正则表达式在i...
-
如何进行iOS中的信息泄露漏洞CVE-2020-9964分析
如何进行iOS中的信息泄露漏洞CVE-2020-9964分析今天就...
-
iOS中怎么删除无用的类
本篇文章给大家分享的是有关iOS中怎么删除无用的类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话...