gpt4 book ai didi

ios - 可重复使用的 UIView 动画

转载 作者:行者123 更新时间:2023-11-28 20:26:12 24 4
gpt4 key购买 nike

考虑这个基本的 View 动画。它会在 1 秒内将 View 缩小为零:

[UIView animateWithDuration: 1.0
delay: 0.0
options: UIViewAnimationCurveEaseIn
animations:^{
vw.transform = CGAffineTransformMakeScale(0.0, 0.0);
}
completion:^(BOOL finished) {
if (finished) {
vw.transform = CGAffineTransformIdentity;
}
}
];

我想做的是在我的应用程序的不同时间在许多不同的 View 上使用相同的动画。为此,我可以很容易地将它放在一个方法中,传入我想要缩放的 View 。没问题。

挑战在于我可能需要根据情况在动画完成时做不同的事情。例如,在一种情况下我可能想从 SuperView 中删除 View ,而在另一种情况下我可能想将 View 移动到新位置(以便稍后放大)。

简而言之:当动画完成时如何通知调用者我的方法?

completion:^(BOOL finished) {
if (finished) {
vw.transform = CGAffineTransformIdentity;
// Do something unique here
}
}

最佳答案

您也可以只传入完成 block 本身:

- (void)animateView:(UIView *)v completion:(void ^(BOOL))ch
{
[UIView animateWithDuration: 1.0
delay: 0.0
options: UIViewAnimationCurveEaseIn
animations:^{
v.transform = CGAffineTransformMakeScale(0.0, 0.0);
}
completion:ch
];
}

然后像这样调用它

[self animateView:someView completion:^(BOOL flag) {
// do stuff here
}];

关于ios - 可重复使用的 UIView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com