我想以非常高的性能翻转我的新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,它可以更快地运行......有进一步的方法可以优化这项任务吗?例如动画停止时添加视图,只是翻转屏幕截图直到动画停止?
答案 0 :(得分:0)
在开始制作动画之前尝试访问backsideController.view。这将导致backsideController的loadView和viewDidLoad被调用。我猜这是你的性能打击 - 所有这些加载&分配导致动画口吃。
你不需要任何花哨的东西,你可以做类似的事情:
if (backsideController.view == nil)
NSLog(@"Where's my view?!");
在您的其他代码之前。
我不相信拥有多个子视图会导致翻转时出现性能问题;我很确定(没有查看你的代码或检查你应该做的工具!)问题是加载和分配视图组件所需的时间。
另外,如果符合你的要求,我会坚持使用presentModalViewController
。在第二个例子中拥有所有额外的代码 - 除非功能需要 - 只是维护问题。