Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Можно объединить несколько блоков анимации так:

Objective-C:

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

                                      }];
                 }];

Swift 2.0:

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.0:

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
    })
}

и заменяя значения шкалы и длительности вашими собственными.

Ответ 2

Ниже представлен небольшой подход, который также включает:

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

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