【问题标题】:iPhone SDK: Optimize UIModalTransitionStyleFlipHorizontaliPhone SDK:优化 UIModalTransitionStyleFlipHorizo​​ntal
【发布时间】:2010-11-30 01:06:21
【问题描述】:

我想以非常高的性能翻转我的新 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,它的工作速度会更快一些……您知道还有其他方法可以优化此任务吗?例如在动画停止时添加视图并仅翻转屏幕截图直到动画停止?

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:

    在开始动画之前尝试访问 backsideController.view。这将导致 backsideController 的 loadView 和 viewDidLoad 被调用。我猜这是你的性能问题——所有加载和分配都会导致动画卡顿。

    你不需要任何花哨的东西,你可以这样做:

    if (backsideController.view == nil)
        NSLog(@"Where's my view?!");
    

    在您的其他代码之前。

    我不认为拥有许多子视图会导致性能问题。我很确定(无需查看您的代码或检查仪器,您应该这样做!)问题在于加载和分配视图组件所需的时间。

    另外,我会坚持使用 presentModalViewController,如果它可以满足您的需求。在您的第二个示例中包含所有额外的代码 - 除非功能需要它 - 只是维护令人头疼。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2013-09-17
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多