gpt4 book ai didi

iphone - 在启动动画之前修改 iPhone 动画容器 View

转载 作者:太空狗 更新时间:2023-10-30 03:48:30 26 4
gpt4 key购买 nike

我正在为我正在开发的纸牌游戏添加一些基本动画。 (我的第一个 iPhone 应用程序。)

我正在创建一个自定义 UIView 类“AnimationContainer”,它从 image1 翻转到 image2,同时从 rect1 移动到 rect2。我的最终目的是让最多四个这样的容器同时进行转换。

我遇到的问题是动画没有显示 image1...所以只出现翻转过渡的后半部分。

但是,如果我先通过触摸重置来重置动画,那么一切都会完美无缺。换句话说,如果我一次又一次地按下 Flip,我只会得到一半的过渡……但如果我先按下 Reset,那么一次翻转一切都会完美无缺。

那么,我怎样才能让动画正确地自行重置呢?

下面是代码、屏幕截图和完整链接:Project Zip File 700k .

alt text

- (void)displayWithImage1 {     //RESET button calls this
self.frame = rect1;
[image2 removeFromSuperview];
[self addSubview:image1];
[self setNeedsDisplay]; //no help: doesn't force an update before animation
}

- (void)runTheAnimation { //FLIP button calls this
[self displayWithImage1]; //<---this is what the reset button calls
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:transition forView:self cache:NO];
self.frame = rect2;
[image1 removeFromSuperview];
[self addSubview:image2];
[UIView commitAnimations];
}

谢谢!

最佳答案

您需要通过一个绘制循环,以便在执行动画之前重绘 View 。这段代码是“画这个,当下一个事件循环出现时,做其他事情”的例子。在 UI 代码中执行此操作并不少见。您的第一个变通办法是尝试同样的事情,但方式要复杂得多。

- (void)_runTheAnimation {
// Moved here from -runTheAnimation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:transition forView:self cache:NO];
self.frame = rect2;
[image1 removeFromSuperview];
[self addSubview:image2];
[UIView commitAnimations];
}

- (void)runTheAnimation { //FLIP button calls this
[self displayWithImage1];
[self performSelector:@selector(_runTheAnimation) withObject:nil afterDelay:0.0];
}

关于iphone - 在启动动画之前修改 iPhone 动画容器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455878/

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