Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iPad应用程序-CALayer使其在旋转时非常滞后_Objective C_Ios_Ipad_Core Animation_Calayer - Fatal编程技术网

Objective c iPad应用程序-CALayer使其在旋转时非常滞后

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

我目前正在开发一个通用应用程序,在我的一个视图控制器中,我有以下xib:

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;它帮不了什么忙,所以还不顺利。