UIView动画幻灯片

use*_*813 2 xcode animation uiview ios cgrect

我试图让我UIView从右边的viewDidLoad方法滑入这里,这就是我所拥有的.

CGRect menuFrame = self.menu.frame;
menuFrame.origin.y = menuFrame.size.height+200;

[UIView animateWithDuration:1
                      delay:0.05
                    options: UIViewAnimationCurveEaseIn
                 animations:^{
                     self.menu.frame = menuFrame;
                 }
                 completion:^(BOOL finished){
                     NSLog(@"Animation Complete!");

                 }];
Run Code Online (Sandbox Code Playgroud)

我不确定这里出了什么问题我非常感谢你的帮助.

mat*_*att 5

这不是你问的问题,但无论如何都值得说:viewDidLoad这个代码是一个不好的地方.viewDidLoad因为视图控制器已获取其视图而不是因为该视图已出现或将很快出现在界面中而被调用.它可能很快会出现在界面中,这就是为什么你的代码到目前为止似乎已经工作的原因,但它可能不会.

这段代码的正确位置可能是viewWillAppearviewDidAppear.但是,第一次出现视图时,您可能只想调用此代码一次.如果您想要阻止调用代码,因为您已经menu在之前的viewDidAppear调用中设置了动画,只需包含条件检查以查看是否menu在可见视图中已有框架.

顺便说一下,避免与框架和边界有关的另一个原因viewDidLoad是,如果你的应用程序启动到横向,这是你的根视图,x并且y是相反的.