iOS: dibujar solo partes de una image en U

Estoy tratando de dibujar solo una parte personalizada de un UIImage (es decir: me gustaría revelar la porción de los toques de usuario de UIImage ) y estoy obteniendo resultados razonables usando la propiedad de mask de la layer .

Algo así en mi UIView :

 UIBezierPath *maskPath = [UIBezierPath bezierPath]; [maskPath setLineWidth:10.0]; [maskPath moveToPoint:CGPointMake(10.0, 10.0)]; [maskPath addLineToPoint:CGPointMake(100.0, 100.0)]; CAShapeLayer *shapeMaskLayer = [CAShapeLayer layer]; shapeMaskLayer.path = maskPath.CGPath; [self.layer setMask:shapeMaskLayer]; 

Entonces, en drawRect :

 - (void)drawRect:(CGRect)rect { [img drawInRect:rect]; } 

Funciona. Solo veo la parte de la image definida por maskPath .

Sin embargo, no parece que esa sea la mejor manera de abordar este problema. Entonces, mi pregunta es: ¿Cuál sería la mejor forma de dibujar una porción personalizada (podría ser cualquier forma) de una image en iOS SDK? .

Una cosa que podrías intentar es simplemente recortar en lugar de crear una capa adicional. p.ej

 - (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); UIBezierPath *maskPath = [UIBezierPath bezierPath]; [maskPath setLineWidth:10.0]; [maskPath moveToPoint:CGPointMake(10.0, 10.0)]; [maskPath addLineToPoint:CGPointMake(100.0, 100.0)]; CGContextAddPath(ctx, maskPath.CGPath); CGContextClip(ctx) [img drawInRect:rect]; }