我试图淡化UIView作为我主视图的子视图。我试图淡入的UIView的尺寸为320x55。
我设置了视图和计时器;
secondView.frame = CGRectMake(0, 361, 320, 55);
secondView.alpha = 0.0;
[self.view addSubview:secondView];
[NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(fadeView) userInfo:NO repeats:NO];
计时器触发以下代码;
secondView.alpha = 1.0;
CABasicAnimation *fadeInAnimation;
fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeInAnimation.duration = 1.5;
fadeInAnimation.fromValue = [NSNumber numberWithFloat:0.0];
fadeInAnimation.toValue = [NSNumber numberWithFloat:1.0];
[fadeInAnimation setDelegate:self];
[secondView.layer addAnimation:fadeInAnimation forKey:@"animateOpacity"];
我的第二个视图在Interface Builder中连接并响应其他消息,但我看不到屏幕上发生的任何事情。
有人可以帮我弄清楚这里发生了什么吗?
谢谢, 瑞奇。
回复以下建议:
我在这里有点不确定。最初我把这段代码放进去(因为我把secondView视为UIView的一个实例?):
[secondView beginAnimations:nil context:NULL];
[secondView setAnimationDuration:0.5];
[secondView setAlpha:1.0];
[secondView commitAnimations];
然后我尝试了你的建议,但没有产生警告或错误,但它仍然没有带来任何表面:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[secondView setAlpha:1.0];
[UIView commitAnimations];
谢谢!瑞奇。
答案 0 :(得分:43)
你应该能够做到这一点更简单。你尝试过这样的事吗?
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[secondView setAlpha:1.0];
[UIView commitAnimations];
答案 1 :(得分:16)
在我看来,你遗漏的一件事是你的观点可能已经有了1.0的alpha值。在动画调用之前确保alpha为0(或任何你想要的)。
我更喜欢使用块动画。它更清洁,更独立。
secondView.alpha = 0.0f;
[UIView animateWithDuration:1.5 animations:^() {
secondView.alpha = 1.0f;
}];
答案 2 :(得分:11)
如果您坚持使用CoreAnimations,这将无法回答您的问题,但对于iPhoneOS,使用动画块进行UIView动画要容易得多。
secondView.alpha = 0.0f;
[UIView beginAnimations:@"fadeInSecondView" context:NULL];
[UIView setAnimationDuration:1.5];
secondView.alpha = 1.0f;
[UIView commitAnimations];
此外,您可以使用
在延迟时间内调用委托[self performSelector:@selector(fadeView) withObject:nil afterDelay:0.5];
答案 3 :(得分:8)
这也是一个很好的选择,有很多选项,而且易于使用。
[secondViewController.view setAlpha:0.0];
[UIView animateWithDuration:1.5
delay:0.0
options:UIViewAnimationOptionCurveEaseIn // See other options
animations:^{
[secondViewController.view setAlpha:1.0];
}
completion:^(BOOL finished) {
// Completion Block
}];