将CAlayer分配给UIImageView,以便能够使用UIImageView完成所有操作

时间:2011-11-30 11:49:59

标签: iphone xcode animation uiimageview calayer

您好每个人都有一个链接:link并且其中有一个示例代码,其中作者使用带有CAShapeLayer的CALayer。我想要使用此CALayer,就像它是一个uiimageView(可能是assign到uiimageview)能够移动它等...

1 个答案:

答案 0 :(得分:0)

您无法更改现有UIView的图层类型(意思是:您也无法更改UIImageView的图层),但绘制到图层非常简单:您需要指定您CALayer的代表,该代表需要实施drawLayer:inContext:

另一种解决方案可能是创建UIView子类并实现+layerClass

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

通过这种方式,您的视图将使用形状图层,您可以简单地使用通常的UIView drawRect:方法。然后,您可以通过(CAShapeLayer *)[self layer]访问该图层以进行修改。不过,我没有尝试过这种方法。

编辑:解释如何完成第二个解决方案:

@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