渲染软件DRCornerViewExtension.zip
DRCornerViewExtension是一款设置圆角的方式,无离屏渲染,无mask 使用 CAShaperLayer 实现 Extension的软件。使用 maskToBounds 和 cornerRadius 或者 mask 时 造成的离屏渲染(如下图):使用 UIView Corner 时的UIImageView使用 UIView Corner 时的UILabel核心代码:- (void)dr_cornerWithRadius:(CGFloat)radius backgroundColor:(UIColor *)bgColor { CGFloat width = CGRectGetWidth(self.bounds); CGFloat height = CGRectGetHeight(self.bounds); UIBezierPath * path= [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, width, height)]; CAShapeLayer *shapeLayer = [CAShapeLayer layer]; if (radius == -1) { radius = MIN(width, height)/2; } [path appendPath:[UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(radius, radius)]]; /* 字面意思是“奇偶”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部 */ [path setUsesEvenOddFillRule:YES]; shapeLayer.path = path.CGPath; shapeLayer.fillRule = kCAFillRuleEvenOdd; shapeLayer.fillColor = bgColor.CGColor; if ([self isKindOfClass:[UILabel class]]) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.layer addSublayer:shapeLayer]; }); return; } [self.layer addSublayer:shapeLayer]; }
- 1
- 粉丝: 484
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- onenet_chongwukanhu_v06.apk
- 2022NOC软件创意编程赛项真题C++初中-决赛(有解析)
- 2022NOC软件创意编程赛项真题python初中-决赛(有解析)
- openLayer-本地数据加载 (day5)
- A题-正弦信号发生器.xdf
- 2022NOC软件创意编程赛项真题python小学高年级-决赛(有解析)
- mathml转换latex需要的xsl文件
- 2022NOC软件创意编程赛项真题图形化小学高年级-决赛(有解析)
- gbase驱动下载gbase-connector-java-8.3.81.53驱动下载
- 2022NOC软件创意编程赛项真题图形化小学低年级-决赛(有解析)