我目前正在开发一个通用应用程序,在我的一个视图控制器中,我有以下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;
}
在我的应用程序中,它可以旋转,当我打开图层时,它在旋转时非常慢/迟缓(仅在ipad 3上!)。
当我旋转时,我会执行以下操作:(来自肖像 - >风景)
-(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
{
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
}
else if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
_landscape = [[ipad_VideoListViewController_Landscape alloc] initWithNibName:@"ipad_VideoListViewController_Landscape" bundle:nil];
_landscape.scroolViewContentOffset = scroolViewContentOffset;
[self.view.layer setRasterizationScale:[UIScreen mainScreen].scale];
self.view.layer.shouldRasterize = YES;
NSMutableArray *viewCons = [[[self navigationController]viewControllers] mutableCopy];
[viewCons removeLastObject];
[viewCons addObject:_landscape];
[[self navigationController]setViewControllers:viewCons animated:NO];
}
}
最糟糕的是它在ipad 2上完美无缺地工作,层激活,但ipad 3似乎无法处理它。它甚至似乎我在ipad 2(有效)上做动画的事情,无法在ipad 3上处理。我制作了自己的tableview标题单元格/ tableview单元格,如果我在ipad 3上使用它们,它们也会滞后。
任何帮助将不胜感激!
答案 0 :(得分:1)
我添加了一些透明图像,并且运行流畅。
但是,如果有人知道为什么这不起作用,我想知道。
必须找到这个解决方案,因为我有一个截止日期:)。
感谢迈克尔的评论!
答案 1 :(得分:0)
在willRotateToInterfaceOrientation中尝试rasterizing:
self.view.layer.shouldRasterize = YES;
然后在你的didRotateToInterfaceOrientation:
self.view.layer.shouldRasterize = NO;
另外,请确保您的图层尽可能不透明。