Iphone UIView动画性能问题

Iphone UIView动画性能问题,iphone,animation,uiview,Iphone,Animation,Uiview,我正在使用UIView动画和presentModalViewController制作一些动画。通过模拟器,它看起来很好,但在设备上,它相当起伏不定。即使是相当基本的视图,例如带有UISearchBar的viewController、带有自定义颜色的UITableView(空)以及导航栏上的按钮,在通过presentModalViewController设置动画时也会出现抖动 我试着在应用加载时将视图加载到内存中,然后在按下按钮时显示视图,看看是否有差异,但结果相同。注意,我在代码中创建对象并将它

我正在使用UIView动画和presentModalViewController制作一些动画。通过模拟器,它看起来很好,但在设备上,它相当起伏不定。即使是相当基本的视图,例如带有UISearchBar的viewController、带有自定义颜色的UITableView(空)以及导航栏上的按钮,在通过presentModalViewController设置动画时也会出现抖动

我试着在应用加载时将视图加载到内存中,然后在按下按钮时显示视图,看看是否有差异,但结果相同。注意,我在代码中创建对象并将它们添加到ViewController视图中,我没有使用NIB

这里有几个视图,我正在制作的只是一个任务栏或alpha属性,这些视图可以很好地制作动画


有什么可能有用的技巧吗?这是在实际发布应用程序时可以解决的问题吗?

许多UIKit对象的渲染速度非常慢(如UITextView和UISegmentedController),因此如果您尝试同时为它们设置动画,它们可能看起来很不稳定。动画的每一帧都需要重新绘制视图

您可以通过将这些慢速视图转换为UIImageView(可以更平滑地设置动画)来加快此过程。在执行动画之前,请尝试调用以下方法:

    [self flattenView:yourView forDuration:0.5];


-(void)flattenView:(UIView *)view forDuration:(CGFloat)duration
{
    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, [[UIScreen mainScreen] scale]);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImageView * imgV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, view.frame.size.width, view.frame.size.height)];
    imgV.image = img;
    [view addSubview:imgV];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, duration * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        [imgV removeFromSuperview];
    });
}

您没有在其中任何一个中实现drawRect,是吗?不是在简单的中。我有一个或两个,但我用的地方drawRect它动画很好。