2013-12-04 1 views
-1

Я пытаюсь оживить те же изображения в различном положении, как это:основной анимации несколько изображений

for (int i = 0; i == 3; i++) { 

     UIImageView *imageToAnimate = [[UIImageView alloc] initWithFrame: imageFrameTwo]; 

     [imageToAnimate setImage: [UIImage imageNamed: imageTwo]]; 

     CGPoint point0 = imageTwoImage.layer.position; 
     CGPoint point1 = { point0.x + 10*i, point0.y - 10*i + 50}; 

     CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position.y"]; 
     anim.fromValue = @(point0.y); 
     anim.toValue = @(point1.y); 
     anim.duration = 15.0f; 
     anim.repeatCount = HUGE_VALF; 
     anim.cumulative = NO; 
     anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 

     // First we update the model layer's property. 
     imageToAnimate.layer.position = point1; 

     // Now we attach the animation. 
     [imageToAnimate.layer addAnimation:anim forKey:@"position.y"]; 
     [theView addSubview:imageToAnimate]; 
    } 

Но ничего не происходит. Без цикла он работает хорошо. Я делаю что-то неправильно?

+1

Почему вы не используете [UIView animateWithDuration:]? –

+0

есть ли, например,? – Pavel

+1

Их много. Сначала вы должны перейти на www.google.com. –

ответ

0

Я не буду вдаваться в подробности, но вы можете попробовать использовать анимационные блоки. 0 и 100 являются точками происхождения. Кроме того, убедитесь, что вы не используете autoLayout, вы должны либо отключить его, либо анимировать с использованием ограничений автоопределения вместо изменений в кадре.

[UIView animateWithDuration:0.3 
         delay:1 
        options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState         
        animations:^ { 

//[yourView setFrame:CGRectMake(0,100,yourView.frame.size.width,yourView.frame.size.height)]; 
[yourView setFrame:CGRectMake(yourView.frame.origin.x + 100,100,yourView.frame.size.width,yourView.frame.size.height)]; 


           } 
        completion:^ (BOOL finished) { 

          }] ; 

Например, для анимации на ось й вам просто нужно иметь различное значение х в

CGRectMake (<desired x value here>, y, ....) 

Линии внутри блока анимации должны скользить ваш взгляд вправо на 100 пикселей в настоящее время.

+0

да, мне понравилось) его очень полезно. как использовать параметры? как массив? – Pavel

+0

@Pavel, вы можете ввести любой вариант анимации, если вы разделите их с помощью '|' характер, как я. Есть много других опций, щелкнув левой кнопкой мыши после написания одного, чтобы увидеть весь список. –

+0

Извините, это должно быть cmd + левый щелчок –

0
[UIView animateWithDuration:DURATION delay:DELAY options:YOUR_UIViewAnimation animations:^(void) 

Это должно сделать трюк;)

+0

[UIView animateWithDuration: 5 delay: 0.2 options: imageToAnimate анимации:^{ imageToAnimate.frame = CGRectMake (imageToAnimate.frame.origin.x + 10, imageToAnimate.frame.origin.y - 10 + 50, imageToAnimate.frame.size .width, imageToAnimate.frame.size.height); } завершение:^(BOOL завершено) { NSLog (@ "done"); }]; сделал так. как его бесконечно? – Pavel

+0

Значит, вы хотите, чтобы он никогда не останавливался? Анимировать навсегда? Ну, просто поместите его в отдельный метод, а затем вызовите его из обработчика завершения каждый раз, когда он закончен;) .... это был ваш вопрос? – Albara

+0

да, подобный так. есть ли возможность использовать опции:? – Pavel