我想在我的iPad应用程序中重现此行为。 我有一个包含四个自定义按钮的子视图。
换句话说,只有当没有人接触到它内部的按钮时,视图才会消失。
你能帮我解决这个问题。
我已经设法学习了UIView动画的基础知识,但我不知道如何排队。 我的iPad有iOS 3.2.2。安装。 很抱歉这个错误的解释,但这是我的第一个iPad应用程序和我的第一个obj-c项目。
答案 0 :(得分:1)
你要保留一个NSTimer
实例变量。只要您的视图完全可见,您就可以注意到,例如实现淡入动画的委托,你可以像这样初始化它:
_fadeTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fade:) userInfo:nil repeats:NO];
确保_fadeTimer是一个实例变量,您需要能够重置它。然后实现淡出方法:
- (void)fade:(NSTimer *)aTimer {
// Forget about timer!
_fadeTimer = nil;
[UIView beginAnimations:nil context:NULL];
// fade here
[UIView commitAnimations];
}
每次用户互动时,您只需调用延迟淡入淡出的方法。为此,请删除并重新创建计时器。或者更改它的开火日期:
- (void)delayFade {
[_fadeTimer setFireDate: [NSDate dateWithTimeIntervalSinceNow: 2.0]];
}
PS:无需明确保留计时器。它被runloop保留直到它发射。回调后,无论如何都会被释放。只需确保始终将变量重置为nil
,否则您的应用可能会因无效访问而崩溃。如果您需要删除它被触发的时间,请调用invalidate
方法。