BezierPath y enmascaramiento

Quiero configurar UIBezierPath como máscara en mi vista: el objective es algo como esto: introduzca la descripción de la imagen aquí

Entonces dibujo la vista con el marco:

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

Y luego intente agregar 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]; 

Pero mi vista está desapareciendo después de eso. ¿Por qué?

Supongo que está utilizando coordinaciones inadecuadas para su capa de máscara. Su capa de máscara debe ubicarse dentro de la vista que enmascara, no en la vista de supervisión de la vista.

Prueba estos cambios:

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

Su código con esas pequeñas modificaciones funciona bien para mí.