Создание анимации для расширения и сжатия UIView

Я хочу создать анимацию, которая изменит размер UIView и его содержимое в разы. В принципе, я хочу сделать анимацию, которая сначала расширяет представление, а затем сжимает его до исходного размера.

каков наилучший способ сделать это? Я попытался CALayer.contentScale, но он ничего не сделал.

2 ответов


вы можете вложить некоторые блоки анимации вместе, например:

Цель-C:

[UIView animateWithDuration:1
                 animations:^{
                     yourView.transform = CGAffineTransformMakeScale(1.5, 1.5);
                 }
                 completion:^(BOOL finished) {
                     [UIView animateWithDuration:1
                                      animations:^{
                                          yourView.transform = CGAffineTransformIdentity;

                                      }];
                 }];

Swift 2:

UIView.animateWithDuration(1, animations: { () -> Void in
    yourView.transform = CGAffineTransformMakeScale(1.5, 1.5)
    }) { (finished: Bool) -> Void in
        UIView.animateWithDuration(1, animations: { () -> Void in
            yourView.transform = CGAffineTransformIdentity
        })}

Swift 3 & 4:

UIView.animate(withDuration: 1, animations: {
    yourView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
}) { (finished) in
    UIView.animate(withDuration: 1, animations: { 
        yourView.transform = CGAffineTransform.identity
    })
}

и замена значений шкалы и продолжительности на ваши собственные.


вот меньший подход, который также петли:

[UIView animateWithDuration:1
                      delay:0
                    options:UIViewKeyframeAnimationOptionAutoreverse | UIViewKeyframeAnimationOptionRepeat
                 animations:^{
                     yourView.transform = CGAffineTransformMakeScale(1.5, 1.5);
                 }
                 completion:nil];

параметр UIViewKeyframeAnimationOptionRepeat это то, что делает его петлей, если вы не хотите, чтобы он продолжал "дышать". Блок анимации действует как "вдох" и UIViewKeyframeAnimationOptionAutoreverse опция автоматически воспроизводит анимацию" выдох".