2013-05-27 83 views
4

我想成立UIBezierPath爲蒙了我的觀點: 的目標是這樣的: enter image description hereBezierPath和掩蔽

所以,我得出與框架視圖:

CGFloat round = 80; 
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(self.frame.size.width/2-105, 0, 210, 60+round)]; 
myView.backgroundColor = [UIColor redColor]; 

然後再試試添加BezierMask:

UIBezierPath *aPath = [UIBezierPath bezierPath]; 

CGSize viewSize = CGSizeMake(myView.frame.size.width, myView.frame.size.height); //(210,80) 
CGPoint startPoint = CGPointMake(myView.frame.origin.x,myView.frame.origin.y); //(279,0) 

[aPath moveToPoint:startPoint]; //(279,0) 

[aPath addLineToPoint:CGPointMake(startPoint.x+viewSize.width,startPoint.y)]; //(489,0) 
[aPath addLineToPoint:CGPointMake(startPoint.x+viewSize.width,startPoint.y+viewSize.height-round)]; //(489,60) 
[aPath addQuadCurveToPoint:CGPointMake(startPoint.x,startPoint.y+viewSize.height-round) controlPoint:CGPointMake(startPoint.x+(viewSize.width/2),80)]; //(279,60) : (384,80) 

[aPath closePath]; 

CAShapeLayer *layer = [CAShapeLayer layer]; 
layer.frame = myView.bounds; 
layer.path = aPath.CGPath; 
myView.layer.mask = layer; 

[self addSubview:myView]; 

但是我的觀點正在消失之後。爲什麼?

回答

4

我想你的掩模圖層使用了不正確的座標。您的遮罩圖層必須位於遮罩的視圖中,而不是視圖的超視圖中。

嘗試這些變化:

CGSize viewSize = myView.bounds.size; 
CGPoint startPoint = CGPointZero; 

你與那些小的修改代碼工作確定爲我。

+0

哦,謝謝。沒有意識到必須是0點。謝謝。 – Kuba

+0

不客氣:-) –