Сохраняйте размер / положение CALayer на UIView при повороте - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть UIImage со следующими свойствами:

imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
imageView.contentMode = UIViewContentModeScaleAspectFit;

Позже я добавляю пользовательский CALayer к изображению в заданной позиции.

Когда я поворачиваю свое изображение,изображение масштабируется, чтобы соответствовать (учитывая contentMode), но теперь мой CALayer расположен неправильно.Видимо, только Y-позиция неправильна.Как я могу правильно изменить положение CALayer при повороте вида?

1 Ответ

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

Насколько я знаю, для того, чтобы позиционировать / расположить ваш пользовательский слой, вы должны создать подкласс вашего viewview и реализовать этот метод:

- (void) layoutSublayersOfLayer:(CALayer*)layer
{
    [super layoutSublayersOfLayer:layer];

    self.customlayer.position = CGPointMake(
            self.bounds.size.width / 2, self.bounds.size.height / 2);
}

Если вы не хотите создавать подкласс изображения, вы можете попробовать этот способ. Этот код должен быть в вашем imageview-контроллере:

- (void) viewDidLoad
{
    [super viewDidLoad];

    self.container = [CALayer layer];
    self.container.bounds = self.imageview.bounds;
    self.container.delegate = self;

    [self.container addSublayer:self.customlayer];
    [self.imageview.layer addSublayer:self.container];
}

- (void) layoutSublayersOfLayer:(CALayer*)layer    // this is layers delegate method
{
    if (layer == self.container)
    {
        self.customlayer.position = CGPointMake(self.container.bounds.size.width / 2, 
                                                self.container.bounds.size.height / 2);
    }
}
...