Objective c iPad应用程序-CALayer使其在旋转时非常滞后
我目前正在开发一个通用应用程序,在我的一个视图控制器中,我有以下xib:Objective c iPad应用程序-CALayer使其在旋转时非常滞后,objective-c,ios,ipad,core-animation,calayer,Objective C,Ios,Ipad,Core Animation,Calayer,我目前正在开发一个通用应用程序,在我的一个视图控制器中,我有以下xib: View -ImageView -TableView -ImageView -View (called tblviewContainer in the following snippet of code) 在我的viewdidload方法中,我制作了一个图层,我将把它放在我的视图(tblviewcontainer)上,这样屏幕的顶部和底部部分是渐变的 [tblViewContainer addSubview:se
View
-ImageView
-TableView
-ImageView
-View (called tblviewContainer in the following snippet of code)
在我的viewdidload方法中,我制作了一个图层,我将把它放在我的视图(tblviewcontainer)上,这样屏幕的顶部和底部部分是渐变的
[tblViewContainer addSubview:self.tableView];
[tblViewContainer sendSubviewToBack:self.tableView];
if (!maskLayer)
{
maskLayer = [CAGradientLayer layer];
UIColor* outerColorSetup = [UIColor colorWithWhite:1.0 alpha:0.0];
UIColor* innerColorSetup = [UIColor colorWithWhite:1.0 alpha:1.0];
CGColorRef outerColor = outerColorSetup.CGColor;
CGColorRef innerColor = innerColorSetup.CGColor;
maskLayer.colors = [NSArray arrayWithObjects:
(__bridge id )outerColor,
(__bridge id)innerColor,
(__bridge id)innerColor,
(__bridge id)outerColor, nil];
maskLayer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.01],
[NSNumber numberWithFloat:0.04],
[NSNumber numberWithFloat:0.8],
[NSNumber numberWithFloat:1.0], nil];
maskLayer.bounds = CGRectMake(0, 0,
self.tableView.frame.size.width,
self.tableView.frame.size.height);
maskLayer.anchorPoint = CGPointZero;
tblViewContainer.layer.mask = maskLayer;
}
在我的应用程序中,可以旋转,当我在图层打开的情况下旋转时,旋转速度非常慢/缓慢(仅在iPad3上!)
旋转时,我执行以下操作:(从纵向->横向)
最糟糕的是,它在iPad2上完美地工作,图层处于活动状态,但iPad3似乎无法处理它。我在iPad2上用动画做的事情(这很管用),似乎在iPad3上也做不到。例如,我自己制作了tableview标题单元格/tableview单元格,如果我在iPad3上使用它们,它们也会滞后
任何帮助都将不胜感激 试试你的意志旋转界面定向:
self.view.layer.shouldRasterize = YES;
self.view.layer.shouldRasterize = NO;
然后在你的didRotateToInterfaceOrientation中:
self.view.layer.shouldRasterize = YES;
self.view.layer.shouldRasterize = NO;
另外,尽可能确保图层不透明。尝试在willRotateToInterfaceOrientation中:
self.view.layer.shouldRasterize = YES;
self.view.layer.shouldRasterize = NO;
然后在你的didRotateToInterfaceOrientation中:
self.view.layer.shouldRasterize = YES;
self.view.layer.shouldRasterize = NO;
另外,尽可能确保你的图层是不透明的。我添加了一些透明图像,使其运行平稳 不过,如果有人知道为什么这不起作用,我想知道 我必须找到这个解决方案,因为我有一个最后期限:)
谢谢你的评论,迈克尔 我改为添加了一些透明图像,运行起来很平稳 不过,如果有人知道为什么这不起作用,我想知道 我必须找到这个解决方案,因为我有一个最后期限:)
谢谢你的评论,迈克尔 我稍后会尝试,如果有帮助或没有帮助,我会发布!它不起作用。仍然像以前一样不平稳地旋转。而不是self.view.layer,它不是应该是tblviewcontainer.layer吗?因为该层就是添加到其中的。尽管如此,我两次都试过了,但没有一次起作用。(我也猜,我也必须在我的横向视图控制器中进行此操作?我也这样做了!:)我稍后会尝试,如果有帮助或没有帮助,我会发布!它不起作用。仍然像以前一样不平稳地旋转。而不是self.view.layer,它不是应该是tblviewcontainer.layer吗?因为该层就是添加到其中的。尽管如此,我两次都试过了,但没有一次起作用。(我也猜,我也必须在我的横向视图控制器中这样做?我也这样做了!:)添加了以下两行:(to willrotate)[self.view.layer setRasterizationScale:[UIScreen mainScreen].scale];self.view.layer.shouldRasterize=是;下面的行应该自动旋转:self.view.layer.shouldRasterize=NO;它的作用很小,所以仍然不平滑。添加了以下两行:(to willrotate)[self.view.layer setRasterizationScale:[UIScreen mainScreen].scale];self.view.layer.shouldRasterize=是;下面的行应该自动旋转:self.view.layer.shouldRasterize=NO;它帮不了什么忙,所以还不顺利。