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。Appleは、「明示的なパスを指定すると、通常、レンダリングのパフォーマンスが向上します」と述べています。

于 2012-10-27T03:59:52.923 に答える
2

Jon の提案がうまくいかない場合は、ビューの UIImage スナップショットを作成して、アニメーション中にそれらを使用してみてください。1 つのプロジェクトでこれを行いました。実際のビューに UIImageView を配置し、アニメーションの最後でそれを削除しました。iOS では影が遅くなります。

于 2012-10-27T05:11:07.240 に答える
0

CALayer に影をラスタライズするように指示できます。

于 2013-05-20T23:51:11.307 に答える