gpt4 book ai didi

iphone - UIView removeFromSuperView 动画延迟

转载 作者:行者123 更新时间:2023-12-03 19:02:54 26 4
gpt4 key购买 nike

我有一个方法,可以对 UIWindow 的一个 subview 进行动画处理,然后使用 removeFromSuperview 将其从 UIWindow 中删除。但是当我将 removeFromSuperview 放在动画 block 之后时,动画永远不会显示,因为 removeFromSuperview 之前从 UIWindow 中删除了 UIView动画播放:-( 如何延迟 removeFromSuperview 以便先播放动画,然后删除 subview ?我在动画 block 之后尝试了 [NSThread sleepForTimeInterval:1]; 但这没有达到预期的效果,因为动画由于某种原因也会休眠。

我的此方法的代码:

  - (void) animateAndRemove
{
NSObject *mainWindow = [[UIApplication sharedApplication] keyWindow];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.8];
UIView *theView = nil;
for (UIView *currentView in [mainWindow subviews])
{
if (currentView.tag == 666)
{
currentView.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.0];
theView = currentView;
}
}
[UIView setAnimationTransition: UIViewAnimationTransitionNone forView:theView cache:YES];
[UIView commitAnimations];



//[NSThread sleepForTimeInterval:1];

[theView removeFromSuperview];


}

最佳答案

您应该在动画 block 中使用委托(delegate)机制来决定动画结束时要执行的操作。对于您的情况,请使用

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:theView];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
....

这可以确保在动画完成后调用[theView removeFromSuperview]

关于iphone - UIView removeFromSuperView 动画延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653139/

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