2015-04-29 3 views
0

У меня появилась анимация UIButton, так как теперь она масштабируется, но я также хочу пересечь UIButton, пока она исчезает.Как сделать масштабирование uibutton, а затем crossblur?

Это мой пример кода для анимации кнопок.

(void)centerButtonAnimation{ 
    CAKeyframeAnimation *centerZoom = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 
    centerZoom.duration = 1.5f; 
    centerZoom.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.5, 1.5, 1.5)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(4, 4, 4)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(5, 5, 5)]]; 
    centerZoom.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
    centerButton.transform = CGAffineTransformMakeScale(5, 5); 
    [centerButton.layer addAnimation:centerZoom forKey:@"buttonScale"]; 
    [centerButton setUserInteractionEnabled:NO]; 
} 
+0

крест выцветанию МЕТОДИЧЕСКИЕ здесь: http://stackoverflow.com/questions/1550206/how-to-crossfade-between-2-images-on-iphone-using-core-animation. Не уверен, что это то, что вы подразумеваете под крестом? Также здесь для конкретного изображения UIButton cross fade (а не ответа, но ниже +13): http://stackoverflow.com/questions/16801948/fade-between-two-uibutton-images –

+0

Думаю, вы добавляете обе анимации на в то же время, или если вы хотите связать их, вы должны реализовать делегат и добавить перекрестное затухание при завершении масштабирования. –

+0

Спасибо за ссылки, я обязательно их реализую и посмотрю .. –

ответ

1

Чтобы связать анимацию, вы можете настроить класс как делегата для анимации.

@property CAKeyframeAnimation *centerZoom; 

- (void) centerButtonAnimation 
{ 
    self.centerZoom = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 

    // Set the delegate to this instance. 
    centerZoom.delegate=self; 

    centerZoom.duration = 1.5f; 
    centerZoom.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.5, 1.5, 1.5)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(4, 4, 4)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(5, 5, 5)]]; 
    centerZoom.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
    centerButton.transform = CGAffineTransformMakeScale(5, 5); 
    [centerButton.layer addAnimation:centerZoom forKey:@"buttonScale"]; 
    [centerButton setUserInteractionEnabled:NO]; 
} 

- (void) crossFadeAnimation 
{ 
    // Insert animation code for cross fade. 
} 

Затем реализовать функцию делегата для обнаружения конца анимации. Если это конец масштабирования, запустите кросс-затухание.

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    if ((theAnimation == self.centerZoom) && flag){ 
    [self crossFadeAnimation]; 
    } 
} 
+0

большое вам спасибо. Я собираюсь реализовать его в ближайшее время –