作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在旋转木马中有一组 View ,每个 View 都使用 CAGradientLayer 作为背景。旋转木马位于带纹理的背景上。我被要求在背景中突出一个三角形以显示所选 View 。我不能只使用带有背景纹理的三角形图像,因为它不一定与主背景匹配。我想从当前 View 的背景中切出一个凹口,以便通过凹口可以看到带纹理的背景。
我该怎么办?是否可以制作多边形图层?
最佳答案
我发现我可以使用 CAShapeLayer 来做到这一点:
CAShapeLayer *mask = [[[CAShapeLayer alloc] init] autorelease];
mask.frame = backgroundLayer.bounds;
mask.fillColor = [[UIColor blackColor] CGColor];
CGFloat width = backgroundLayer.frame.size.width;
CGFloat height = backgroundLayer.frame.size.height;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 0, 0);
CGPathAddLineToPoint(path, nil, width, 0);
CGPathAddLineToPoint(path, nil, width, height);
CGPathAddLineToPoint(path, nil, (width/2) + 5, height);
CGPathAddLineToPoint(path, nil, width/2, height - 5);
CGPathAddLineToPoint(path, nil, (width/2) - 5, height);
CGPathAddLineToPoint(path, nil, 0, height);
CGPathAddLineToPoint(path, nil, 0, 0);
CGPathCloseSubpath(path);
mask.path = path;
CGPathRelease(path);
backgroundLayer.mask = mask;
关于iphone - 如何从 CALayer 中切出一个缺口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7835297/
我是一名优秀的程序员,十分优秀!