DRCornerViewExtension渲染软件
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]; }
评论
Blender三维绘图及渲染软件
Blender是一款免费开源的3D创作套件。使用Blender,你可以创建3D可视化效果,例如静止图像,3D动画,VFX快照和视频编辑。它非常适合那些受益于其统一管线和响应式开发过程的个人和小型工作室
Blender三维绘图及渲染软件
0
Art of Illusion三维建模和渲染软件
ArtofIllusion是一个用Java语言写成的基于GPLv2的开源三维建模和渲染软件,可以创建高质量的具有真实感的三维模型。最突出的特点就是其简单的GUI,规定了强大且复杂的功能。它使用方便,可
Art of Illusion三维建模和渲染软件
0