iphone - objective - asigna un CAlayer a un UIImageView para poder hacer todo lo que puedes hacer con un UIImageView



uiimageview swift 4 (1)

Hola a todos, hay un link: link y hay un código de muestra donde el autor usa un CALayer con CAShapeLayer. Lo que me gustaría es usar este CALayer como si fuera un uiimageView (tal vez asignarlo a un uiimageview) para poder para moverlo, etc.


No puede cambiar el tipo de capa de una UIView existente (es decir: tampoco puede cambiar la capa de una UIImageView ), pero dibujar en una capa es bastante fácil: necesita asignar un delegado a su CALayer , y ese delegado necesita implementar drawLayer: inContext:.

Otra solución podría ser crear una subclase UIView e implementar +layerClass :

+ (Class)layerClass
{
    return [CAShapeLayer class];
}

De esta forma, su vista usará una capa de forma y podrá simplemente usar el método drawRect: UIView . A continuación, puede acceder a la capa a través de (CAShapeLayer *)[self layer] para modificarla. Aunque no he probado este enfoque.

Editar: explicando cómo se haría la segunda solución:

@interface MyView : UIView {
    UIImage *image;
}
@property(retain) UIImage *image;
@end


@implementation MyView
@synthesize image;

+ (Class)layerClass
{
    return [CAShapeLayer class];
}

- (void)dealloc
{
    self.image = nil;
    [super dealloc];
}

- (void)drawRect:(CGRect)rect
{
    // Draw the image. You might need to play around with this,
    // for example to draw the image as aspect fit or aspect fill.
    [image drawInRect:rect];
}
@end




calayer