2015-07-28 38 views
1

所以,我有以下功能的iOS更新的CALayer

- (void)setMoreMenuHidden:(BOOL)hidden animated:(BOOL)animated completion:(void(^)(BOOL))completion 
{ 
    if (!hidden) 
    { 
     [self.view layoutIfNeeded]; 
     [self.view setNeedsUpdateConstraints]; 
     [UIView animateWithDuration:0.5f animations:^ 
     { 
      [self.view layoutIfNeeded]; 
      [_profileInfoVC viewWillLayoutSubviews]; 
     }]; 
    } 
} 

和内_profileInfoVC我把它做

-(void)viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 

    [self.view layoutIfNeeded]; 
    self.pictureImageView.layer.cornerRadius = self.pictureImageView.frame.size.width/2; 
    self.pictureImageView.clipsToBounds = YES; 
} 

所以我知道层动画块中忽略,但我认为这也意味着更新,因为在动画期间和之后它仍然是相当正方形的。有没有解决方案,这不需要我也为图层创建一个核心动画?

回答

0

所以看来你对这方面感兴趣的块是Completion块。

- (void)setMoreMenuHidden:(BOOL)hidden animated:(BOOL)animated completion:(void(^)(BOOL))completion 
{ 
    if (!hidden) 
    { 
     [self.view layoutIfNeeded]; 
     [self.view setNeedsUpdateConstraints]; 
     [UIView animateWithDuration:0.5f animations:^ 
     { 
      [self.view layoutIfNeeded]; 
     } 
     completion:^(BOOL finished) 
     { 
      [_profileInfoVC viewWillLayoutSubviews]; 
     }]; 
    } 
} 

上面似乎已经解决了我的问题,我也从来没有真正的直接调用viewWillLayoutSubviews直接使该行已更改为[_profileInfoVC.view setNeedsLayout];

风扇