2012-05-21 2 views
4

Я пытаюсь повернуть UIImageView в круговой маске (которая установлена ​​с помощью myImageView.layer.mask). Проблема в том, что всякий раз, когда я пытаюсь повернуть указанный UIImageView, маска вращается вместе с ним. Вот какой код.Сохранение маски CAShapeLayer статично во время анимации

Настройка маски:

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, - 169) 
                 radius:191 
                startAngle:0.0 
                 endAngle:2*M_PI 
                clockwise:YES];  

    CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
    [shapeLayer setFrame:myImageView.bounds]; 
    [shapeLayer setPath:[path CGPath]]; 
    myImageView.layer.mask = shapeLayer; 

Анимация:

[UIView animateWithDuration:kRotationTime animations:^(void){   
    myImageView.transform = CGAffineTransformMakeRotation(angle); 
}]; 

И это в основном все есть на него. UIImageView, вращающийся вокруг своего центра в круговой маске фиксированного положения - это желаемый эффект. Возможно, есть еще один способ структурировать иерархию представлений, чтобы myImageView и маска были братьями и сестрами, но мне не повезло с этим путем.

ответ

8

Поместите изображение в дополнительный простой просмотр UIView. Установите маску слоя в супервизор. Анимируйте изображение.

+0

Хорошее предложение. –

Смежные вопросы