制作动画以扩展和缩小 UIView
Posted
技术标签:
【中文标题】制作动画以扩展和缩小 UIView【英文标题】:Making an animation to expand and shrink an UIView 【发布时间】:2014-03-14 03:44:35 【问题描述】:我想创建一个动画来调整 UIView 及其内容的大小。基本上,我想制作一个动画,首先扩展视图然后将其缩小回原始大小。
最好的方法是什么?我试过 CALayer.contentScale 但它什么也没做。
【问题讨论】:
与***.com/questions/5446899/…或***.com/questions/18329286/…有关? 【参考方案1】:您可以像这样将一些动画块嵌套在一起:
目标-C:
[UIView animateWithDuration:1
animations:^
yourView.transform = CGAffineTransformMakeScale(1.5, 1.5);
completion:^(BOOL finished)
[UIView animateWithDuration:1
animations:^
yourView.transform = CGAffineTransformIdentity;
];
];
斯威夫特 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
)
斯威夫特 3/4/5:
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
选项自动播放“呼气”动画。
【讨论】:
【参考方案3】:Swift 5 UIView 扩展:
extension UIView
func pulse(withIntensity intensity: CGFloat, withDuration duration: Double, loop: Bool)
UIView.animate(withDuration: duration, delay: 0, options: [.repeat, .autoreverse], animations:
loop ? nil : UIView.setAnimationRepeatCount(1)
self.transform = CGAffineTransform(scaleX: intensity, y: intensity)
) (true) in
self.transform = CGAffineTransform.identity
然后使用以下内容:
yourView.pulse(withIntensity: 1.2, withDuration: 0.5, loop: true)
只需确保将yourView
替换为您自己的视图即可。
【讨论】:
以上是关于制作动画以扩展和缩小 UIView的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中,您如何制作动画以将容器从 0 高度扩展到其内容的高度?
如何让一个脚本触发另一个 [jQuery] 缩小和扩展搜索框