我目前有一个UIView和一个imageview背后:我想做的是能够" cut"在UIView上显示STAR形状,以便可以看到Imageview。你是如何做到的?
现在我能够切割一个矩形或圆形但不知道星形或多边形 所以如果有人知道任何事情,请提前分享... thanx
答案 0 :(得分:1)
我很确定你需要使用图像蒙版。这是一个只包含黑色形状(在您的情况下是一个明星)在白色背景上的图像。请参阅此处的教程:http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html
在这种情况下,UIImageView需要位于UIView之上,然后使用上述链接中的方法进行屏蔽。据我所知,没有一种简单的方法可以从视图中“切割”一个形状,但这种方法应该会给你带来同样的效果。
如果你想在运行时更多地控制形状,另一个选择是将一个星形绘制为CGShape并将其用作你的面具。
答案 1 :(得分:0)
创建形状图层
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
[shapeLayer setFrame:CGRectMake(10, 10, 50, 50)];
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint:CGPointMake(12, 25)];
[bezierPath addLineToPoint:CGPointMake(25, 12)];
[bezierPath addLineToPoint:CGPointMake(38, 25)];
[bezierPath addLineToPoint:CGPointMake(25, 38)];
[bezierPath closePath];
[shapeLayer setPath:bezierPath.CGPath];
以上bezier路径具有随机点,创建您自己的星形版本并根据您的星位和大小设置框架。
将图层遮盖到视图中
[[yourView layer] setMask:shapeLayer];
答案 2 :(得分:0)
如果你想画一个星形图像..我非常确定这段代码真的可以帮到你。
这两行负责起点和终点:
CGContextMoveToPoint();
CGContextAddLineToPoint();
CGContextClosePath() : is used to close the current subpath of the context's path.
- (void)drawRect:(CGRect)rect
{
CGContextRef contextRef=UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 2);
CGContextSetStrokeColorWithColor(contextRef, [UIColor redColor].CGColor);
CGContextBeginPath(contextRef);
CGContextMoveToPoint(contextRef, 50.0, 440.0);
CGContextAddLineToPoint(contextRef, 100.0, 440.0);
CGContextAddLineToPoint(contextRef, 75.0, 380.0);
CGContextClosePath(contextRef);
CGContextMoveToPoint(contextRef, 50.0, 400.0);
CGContextAddLineToPoint(contextRef, 100.0, 400.0);
CGContextAddLineToPoint(contextRef, 75.0, 460.0);
CGContextClosePath(contextRef);
[[UIColor grayColor]setFill];
CGContextStrokePath(contextRef);
CGContextFillPath(contextRef);
}