повернуть изображение на 90 градусов вокруг точки привязки

Я хочу повернуть изображение на 90 градусов вокруг точки привязки. Вы можете увидеть, чего я хочу добиться здесь.введите здесь описание изображения

У меня есть этот кусок кода.

CGFloat DegreesToRadians(CGFloat degrees)
{
    return degrees * M_PI / 180;
}

NSNumber* DegreesToNumber(CGFloat degrees)
{
    return [NSNumber numberWithFloat:
            DegreesToRadians(degrees)];
}
-(IBAction)rotate:(id)sender{
    CABasicAnimation *rotationAnimation = [CABasicAnimation
                                           animationWithKeyPath:@"transform.rotation.y"];

    [rotationAnimation setFromValue:DegreesToNumber(0)];
    [rotationAnimation setToValue:DegreesToNumber(90)];
    [rotationAnimation setDuration:3.0f];
    [rotationAnimation setRepeatCount:1];

    [[[self imgShare] layer] addAnimation:rotationAnimation forKey:@"rotate"];
}

Есть проблемы с просмотром. Во-первых, когда он поворачивается на 90 градусов, он сразу же возвращается в исходное состояние. Также я не знаю, как я могу повернуть его вокруг точки привязки.

Любая помощь ?


person Steaphann    schedule 03.07.2013    source источник


Ответы (2)


Попробуй это:

self.imgShare.transform = CGAffineTransformMakeRotation(M_PI/2);
person Say2Manuj    schedule 03.07.2013

Вы используете CABAsicAnimation, который просто обрабатывает часть анимации. Повернуть вид после поворота — ваша обязанность. Поэтому вы должны изменить свойство преобразования вида после поворота.

self.imgShare.transform = CGAffineTransformMakeRotation(M_PI/2);

Для вашей проблемы с anchorPoint. Каждый UIView поддерживается CALayer, а каждый CALayer имеет свойство anchorPoint. Просто измените точку привязки видов, и вы сможете вращать вид вокруг этой точки.

anchorPoint по умолчанию 0,5,0,5. Измените его между 0.0 и 1.0.

person Pfitz    schedule 03.07.2013