назначьте CAlayer для UIImageView, чтобы иметь возможность делать все, что вы можете делать с UIImageView - PullRequest
0 голосов
/ 30 ноября 2011

Привет всем, есть ссылка: ссылка , и в ней есть пример кода, где автор использует CALayer с CAShapeLayer. Что я хотел бы использовать этот CALayer, как это было uiimageView ( может быть, назначить для просмотра uiimageview), чтобы иметь возможность перемещать его и т. д ...

1 Ответ

0 голосов
/ 30 ноября 2011

Вы не можете изменить тип слоя существующего 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
...