2011-03-09 18 views
5

Tengo una UIBezierpath con una forma de círculo:Llenar un UIBezierPath con un UIImage

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:100]; 

Pero entonces yo quiero llenar el círculo con un UIImage (mostrar sólo una parte de la imagen que está dentro del círculo)

Saludos Kristian

Editar:

Gracias a Daniel y Dave por excelentes respuestas: D me salvó un montón de problemas ; D

Las soluciones:

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextAddPath(ctx, path.CGPath); 
CGContextClip(ctx); 

y:

path.addClip; 

Tanto funciona perfectamente pero terminé usando el último método (por Dave), ya que requiere menos código.

+0

es probable que desee una imagen enmascarada que debe hacerse sin bezier ruta? – Eimantas

Respuesta

9

Actualización: como señala Dave DeLong, no es necesario utilizar las funciones de Core Graphics. Esto debería hacer el truco:

[path addClip]; 
[image drawAtPoint:CGPointZero]; 
+2

+1, aunque no necesita pasar a CoreGraphics para hacerlo. Puede usar '- [UIImage draw ....]' y '- [UIBezierPath addClip]' para hacer esto. –

+0

Buena llamada Dave - No había notado el método 'addClip'. Se actualizó la respuesta que muestra la implementación de UIKit. –