ios - 为什么使两个角变圆比使所有角变圆慢?

标签 ios layer

编辑:更新语言以提高可读性。

我制作了一个带有 2 个圆角的 ImageView ,如下所示:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.photoImageView.bounds byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = maskPath.CGPath;
self.photoImageView.layer.mask = maskLayer;

但是它比使用这段代码把所有的角都变圆要慢。

self.photoImageView.layer.cornerRadius = 10;

有人知道为什么以及如何改进我的“2 角”代码吗?

最佳答案

您的代码正在向绘图添加另一个阶段。通常情况下,背景会直接绘制(使用给定的 cornerRadius)到目标,但如果指定了 mask ,则会将背景绘制到临时表面,然后使用 mask 复制到目标。

在标准的 CALayer 对象中,没有任何内置功能可以仅对某些背景角进行圆角处理。

我确实想知道“更慢”到底有多慢;这是过早的优化吗?

关于ios - 为什么使两个角变圆比使所有角变圆慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15192975/

相关文章:

ios - UITextfield 中的编辑模式问题

Android 谷歌地图 GeoJsonLayer OnFeatureClickListener,多层

java - 在 MVC Java 游戏中将声音放在哪里?

jQuery;视差页面 - 获取点击事件遍历DIV层

android - 在 Android 中播放视频时出现黑屏

ios - 为 iPhone 创建自定义弹出窗口 - 我要子类化哪个类?

ios - NSNumber 类型的托管属性?没有初始化为 nil

ios - undefined symbol :___ isplatformversionatleast

ios - 我想产生类似于调整联系人应用程序顶部 View 大小的效果?

html - 下拉菜单,z-index问题