iPhone SDK:优化UIModalTransitionStyleFlipHorizo​​ntal

时间:2009-09-21 10:38:54

标签: iphone iphone-sdk-3.0

我想以非常高的性能翻转我的新ModalView,但是新的View有很多子视图,因此Flip-Effect的性能非常糟糕。其实我这样做:

[controller setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:backSideController animated:YES];

我也尝试了

CATransition *transition = [CATransition animation];
transition.duration = 0.75;
[transition setType: @"flip"];
[transition setSubtype:@"fromRight"];

transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[transition setFillMode:@"extended"];

[[self.view layer] addAnimation:transition forKey:nil];


[self.view addSubview: backSideController.view];
[CATransaction commit];

使用Core-Animation,它可以更快地运行......有进一步的方法可以优化这项任务吗?例如动画停止时添加视图,只是翻转屏幕截图直到动画停止?

1 个答案:

答案 0 :(得分:0)

在开始制作动画之前尝试访问backsideController.view。这将导致backsideController的loadView和viewDidLoad被调用。我猜这是你的性能打击 - 所有这些加载&分配导致动画口吃。

你不需要任何花哨的东西,你可以做类似的事情:

if (backsideController.view == nil)
    NSLog(@"Where's my view?!");
在您的其他代码之前

我不相信拥有多个子视图会导致翻转时出现性能问题;我很确定(没有查看你的代码或检查你应该做的工具!)问题是加载和分配视图组件所需的时间。

另外,如果符合你的要求,我会坚持使用presentModalViewController。在第二个例子中拥有所有额外的代码 - 除非功能需要 - 只是维护问题。