Бесконечный вращающийся фон изображения UIImageView - PullRequest
0 голосов
/ 15 марта 2012

Я бы хотел расширить класс с UIImageView, который будет бесконечно вращать образ вселенной. Так что я могу просто поместить это изображение в качестве фона для других элементов пользовательского интерфейса.

3 вопроса здесь:

  1. Правильный ли путь от класса UIImageview.
  2. Как продолжать вращаться бесконечно, и в качестве фона, если поместить его в другие представления, мне не нужно писать дополнительные строки кода.
  3. Я написал грубый прототип, когда я помещал его в другие виды в качестве фона, все элементы пользовательского интерфейса в этом представлении вращаются вместе с изображением.

Ответы [ 3 ]

3 голосов
/ 16 апреля 2012

Предположим, что у вас есть UIImageView, и присвойте ему изображение с именем myImgView.На viewDidLoad добавьте свой код, как показано ниже:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:MAXFLOAT];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];

Это работает для меня как шарм.

2 голосов
/ 15 марта 2012
  1. Нет ничего плохого в расширении класса UIImageview.
  2. Создание анимации вращения и установка повтора.
  3. Не добавлять элемент при вращении изображения. (Добавьте элементы в базовый вид. Вставьте вращающийся вид изображения с индексом 0).
1 голос
/ 16 апреля 2012

Из справочника классов UIView :

Класс UIImageView оптимизирован для отображения своих изображений на дисплее. UIImageView не будет вызывать drawRect: подкласс. Если вашему подклассу требуется пользовательский код для рисования, рекомендуется использовать UIView в качестве базового класса.

В настоящее время подклассы UIImageView работают, особенно если они не влияют на код рисования. Только не жалуйтесь Apple, если будущее обновление iOS сломает ваш подкласс. Достаточно легко написать собственный подкласс UIView для отображения изображения. Если у вас уже есть подходящая графика, рассмотрите возможность размещения ее в CALayer contents вместо реализации метода UIView drawRect.


Вращения путем изменения UIView transform (тип CGAffineTransform) всегда выбирают кратчайший путь. Это означает, что поворот на 270 градусов по часовой стрелке анимируется как поворот на 90 градусов против часовой стрелки, и любое кратное 360 градусов ничего не изменит. Вы можете получить вращение на 360 градусов, если получите слой вида, и анимировать CALayer transform (тип CATransform3D). См. Можно ли использовать CGAffineTransformMakeRotation для поворота вида более чем на 360 градусов?

Чтобы анимация повторялась бесконечно, Справочник по протоколу CAMediaTiming рекомендует установить repeatCount в HUGE_VALF.

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