我正在尝试做一些简单的动画。我有一个UIViewController,其中有两个视图,它们是主视图的子视图。 (在Interface Builder中,我创建了两个UIView对象,它们都是自己的视图子视图,它们是从UIViewController模板在.xib中自动创建的)。我在IB中隐藏了第二个视图。视图控制器以模态方式呈现为UIModalPresentationFormSheet。按下按钮时,我想隐藏第一个视图,转到第二个视图。我在这里尝试了以下的Apple示例:http://developer.apple.com/library/ios/#samplecode/ViewTransitions/Listings/Classes_ViewTransitionsAppDelegate_m.html#//apple_ref/doc/uid/DTS40007411-Classes_ViewTransitionsAppDelegate_m-DontLinkElementID_4
按下按钮时,这是我的代码:
CATransition *transition = [CATransition animation];
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.duration = 0.75;
transition.type = kCATransitionReveal;
[self.view.layer addAnimation:transition forKey:nil];
self.FirstScreen.hidden = YES;
self.SecondScreen.hidden = NO;
不幸的是,我没有得到任何动画。我得到了我想要的隐藏/取消隐藏,但没有过渡动画。所以我的第一个问题是我在代码中做错了什么?
一个问题是,你能用块做这样的事吗?我在块中做过一些简单的动画,比如用
更改alpha[UIView animationWithDuration... ]
但不知道如何用块进行上述转换。
答案 0 :(得分:1)
而不是动画hidden
属性尝试动画:
self.FirstScreen.alpha = 0.0;
self.SecondScreen.alpha = 1.0;
或
self.FirstScreen.layer.opacity = 0.0;
self.SecondScreen.layer.opacity = 1.0;
从这里开始 - UIView Class Reference
UIView类的以下属性是可动画的:
@property frame
@property bounds
@property center
@property transform
@property alpha
@property backgroundColor
@property contentStretch
另一种解决方案:
[UIView animateWithDuration:0.75 delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.FirstScreen.alpha = 0.0;
self.SecondScreen.alpha = 1.0;
}
completion:nil];