在视图周围绘制阴影会减慢我的过渡,CALayer,ios

时间:2012-10-27 03:27:32

标签: objective-c ios core-graphics calayer

MyViewControllerB.xib包含

view( UIView )
  |
  |__image (UIImageView)
  |
  |__view (UIView)
  |
  |__text (UITextView)
  |
  |__view (UIView) ( shadow is adding at here )

然后我在底部的视图周围添加阴影,如下所示

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.bottomView.layer setMasksToBounds:NO];
    self.bottomView.layer.shadowColor   =   [UIColor blackColor].CGColor;
    self.bottomView.layer.shadowRadius  =   5;
    self.bottomView.layer.shadowOpacity =   1;
    self.bottomView.layer.shadowOffset  =   CGSizeMake(0  , 0 );
}

当我在MyViewControllerA上做pushViewController: animated:时:

@implementation MyViewControllerA
    MyViewControllerB  *controller     =   [[MyViewControllerB alloc] initWithNibName:@"MyViewControllerB" bundle:nil];
    [self.navigationController pushViewController:controller animated:YES];

然后过渡根本不顺利。但是,如果它删除了用于绘制阴影的代码块,那么转换就像往常一样平滑

您对此问题有任何想法吗?如果您以前经历过,请帮忙 感谢

3 个答案:

答案 0 :(得分:4)

指定CALayer shadowPath。 Apple表示,“指定显式路径通常可以提高渲染性能。”

答案 1 :(得分:2)

如果Jon的建议不起作用,您可以尝试拍摄视图的UIImage快照,并在动画期间使用它们。我们为一个项目做了这个 - 在实际视图上放置一个UIImageView,然后在动画结束时删除它。 iOS上的阴影很慢。

答案 2 :(得分:0)

您可以告诉CALayer光栅化阴影。