Создание анимации для расширения и сжатия 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
опция автоматически воспроизводит анимацию" выдох".