1

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 );
}

当我pushViewController: animated:在 MyViewControllerA 做时:

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

那么过渡一点也不顺利。但是,如果它删除用于绘制阴影的代码块,则过渡像往常一样平滑

你对这个问题有什么想法吗?如果您之前遇到过,请帮忙谢谢

4

3 回答 3

4

指定 CALayer shadowPath。苹果表示,“指定显式路径通常会提高渲染性能。”

于 2012-10-27T03:59:52.923 回答
2

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

于 2012-10-27T05:11:07.240 回答
0

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

于 2013-05-20T23:51:11.307 回答