0

我正在尝试在视图控制器之间做自定义动画,在下面的例子中,我正在模仿 UINavigationController 的 popViewController。但是,它似乎在 iPhone,尤其是 iPad 上滞后很多,Time Profiler 证实它说所有滞后都来自 addSubview 行。

无论如何,我通过 Interface Builder 连接 nlView 并使用以下代码:

    [self.view.superview addSubview:nlView.view];
    [nlView.view setFrame:CGRectMake(-kWidth, 20, kWidth, kHeight-20)];
    [UIView animateWithDuration:2
                     animations:^{
                         [nlView.view setFrame:CGRectMake(0, 20, kWidth, kHeight-20)];
                         [self.view setFrame:CGRectMake(kWidth, 20, kWidth, kHeight-20)];
                     }
                     completion:^(BOOL finished){
                         [self.view removeFromSuperview];
                     }];

那么,我怎样才能将这种滞后降到最低呢?没有泄漏或类似的东西,但我怎么能改变我的逻辑,以便在改变视图时没有滞后?

谢谢!

4

1 回答 1

1

如果你想动画视图的位置,而不是设置框架,动画视图的层位置是这样[nlView.view.layer setPosition: newPosition]...的:当然你需要将 QuartzCore 添加到你的项目中并导入 QuartzCore/QuartzCore.h

于 2012-06-23T03:46:01.900 回答