0

Я пытаюсь изучить некоторую анимацию при работе с созданием настраиваемого элемента управления. Я прошел через фантастический учебник здесь: http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikitанимировать преобразованный UIImageView?

Я получил его на работу, и разработчик имеет ссылку на свой код на GitHub здесь: https://github.com/funkyboy/How-To-Create-a-Rotating-Wheel-Control-with-UIKit

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

- (void) drawWheel 

Я изменил линию

im.transform = CGAffineTransformMakeRotation (angleSize * я);

к

im.transform = CGAffineTransformMakeRotation (angleSize * я - M_PI/2);

для учета положения в настоящее время -pi/2

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

Я написал следующий метод:

  • (пустоты) growImage: (UIImageView *) v {

    [UIView animateWithDuration: 1.0 анимации:^{ v.transform = CGAffineTransformMakeScale (1.3 , 1,3); } завершение:^(BOOL закончен) { [UIView animateWithDuration: 1.0 анимации:^{ v.transform = CGAffineTransformMakeScale (1.0, 1.0); }]; }];

    }

и я вызвать этот первый в методе initWheel где начальная гвоздичное это первый набор:

if (i == 0) { 
     im.alpha = maxAlphavalue; 
     [self growImage: cloveImage]; 
    } 

Для второго пункта, я написал следующий метод:

  • (void) findViewandGrowImage: (int) тег { для (id myArrayElement in self.container.subviews) { UIImageView * v = myArrayElement; если (v.tag == tag) { [self growImage: v]; break; } } }

, который я ссылаться в - (недействительными) touchesEnded: (NSSet *) касается withEvent: (UIEvent *) событие {

как таковой, после установки альфа-значение:

lab.alpha = maxAlphavalue; 
[self findViewandGrowImage : currentValue]; 

Для меня существует фундаментальное разъединение где-то о том, что я делаю неправильно; Первый случай работает нормально; во втором случае гвозди вращаются в разные сектора на колесе, а также растут и сжимаются ... и я понятия не имею, почему. Мне бы очень понравился вход.

спасибо.

+0

Я действительно не понимаю, что вы хотите увидеть со своим вторым случаем. – HalR

ответ

1

Если у вас есть преобразование:

m.transform = CGAffineTransformMakeRotation(angleSize*i - M_PI/2); 

и вы затем анимировать его преобразование из

[UIView animateWithDuration:1.0 animations:^{ v.transform = CGAffineTransformMakeScale(1.3, 1.3); } 

он будет вращаться назад от (angleSize*i - M_PI/2) назад под углом 0, как это воодушевляет, потому что ваше второе преобразование не включало это вращение.

Если вы хотите, чтобы изменить размер и сохранить свой текущий угол, вам нужно будет сочетать вращение с масштабом, а затем использовать это в своих расчетах, как так:

[UIView animateWithDuration:1.0 animations:^{ 
    CGAffineTransform newTransform = CGAffineTransformMakeRotation(angle); 
    v.transform = CGAffineTransformScale(newTransform, 1.3, 1.3);v.transform = CGAffineTransformMakeScale(1.3, 1.3); 
} 
+0

спасибо, это помогло мне встать на правильный путь. Мне пришлось удалить блок завершения и использовать преобразование с настройкой угла. – marina

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