2012-10-27 65 views
1

MyViewControllerB.xib包含圍繞視圖繪製陰影減慢我的轉變,CALayer的,IOS

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]; 

那麼過渡不是sm根本就不是。但是,如果刪除用於繪製陰影的代碼塊,則轉換過程與往常一樣平滑。

您對此問題有任何想法。 謝謝

回答

4

請指定CALayer shadowPath。蘋果說,「指定明確的路徑通常會提高渲染性能。」

2

如果Jon的建議不起作用,您可以嘗試拍攝視圖的UIImage快照並在動畫過程中使用這些快照。我們爲一個項目做了這個 - 將UIImageView放在實際視圖上,然後在動畫結束時將其移除。 iOS上的陰影很慢。

0

您可以告訴CALayer柵格化陰影。