как повернуть UIIMageVIew с фиксированной точкой? - PullRequest
2 голосов
/ 12 сентября 2009

Я хочу повернуть изображение на угол. Но я не хочу поворачивать изображение с фиксированной точкой. Как я могу установить эту фиксированную точку?

Ответы [ 3 ]

13 голосов
/ 12 сентября 2009

Установите привязку слоя вида, которая находится в локальных координатах вида от 0 до 1. То есть верхний левый угол равен 0,0, а нижний правый равен 1,1.

Например, по умолчанию вращается вокруг центра:

imageView.layer.anchorPoint = CGPointMake(.5,.5);

Если вы хотите повернуть вокруг источника:

imageView.layer.anchorPoint = CGPointMake(0,0);

Или средний правый край:

imageView.layer.anchorPoint = CGPointMake(1,.5);
4 голосов
/ 12 сентября 2009

Если вы создаете проект, используя «Приложение на основе представления» по умолчанию в XCode, просто добавьте этот код в ваш -viewDidLoad в главном контроллере представления, который он создает:

- (void)viewDidLoad {
    [super viewDidLoad];

    CABasicAnimation *rotationAnimation = [CABasicAnimation 
                         animationWithKeyPath:@"transform.rotation.z"];

    [rotationAnimation setFromValue:DegreesToNumber(0)];
    [rotationAnimation setToValue:DegreesToNumber(360)];
    [rotationAnimation setDuration:3.0f];
    [rotationAnimation setRepeatCount:10000];

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

Повернет вид вокруг оси x (по умолчанию в центре). Вы можете просто установить содержимое этого представления (например, [[self view] setContents: image], где image - это изображение, которое вы загружаете с помощью UIImage).

Вот мои вспомогательные функции для преобразования градусов в радианы.

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

NSNumber* DegreesToNumber(CGFloat degrees)
{
    return [NSNumber numberWithFloat:
            DegreesToRadians(degrees)];
}

Надеюсь, это поможет.

1 голос
/ 01 февраля 2012

imageView.layer.anchorPoint = CGPointMake(.5,.5); для этого вам необходимо импортировать следующий заголовочный файл

#import <QuartzCore/QuartzCore.h>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...