iOS Autolayout Constraints动画打破内部视图位置

时间:2014-05-14 13:34:14

标签: ios animation uiwebview autolayout

我正在使用Autolayout和约束,我需要为视图设置动画,就像它从缩略图到全屏一样。该视图有一个子视图,一个webview,它的四个边都附有约束。

这就是我的所作所为:

- (void)animate {

trailingConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTrailing
                                                            relatedBy:NSLayoutRelationEqual toItem:self.superview.superview attribute:NSLayoutAttributeTrailing multiplier:1
                                                             constant:_trailing];
leadingConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeLeading
                                                           relatedBy:NSLayoutRelationEqual toItem:self.superview.superview attribute:NSLayoutAttributeLeading multiplier:1
                                                            constant:_leading];
bottomConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeBottom
                                                          relatedBy:NSLayoutRelationEqual toItem:self.superview.superview attribute:NSLayoutAttributeBottom multiplier:1
                                                           constant:_bottom];
topConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTop
                                                       relatedBy:NSLayoutRelationEqual toItem:self.superview.superview attribute:NSLayoutAttributeTop multiplier:1
                                                        constant:_top];

[self.superview.superview addConstraint:trailingConstraint];
[self.superview.superview addConstraint:leadingConstraint];
[self.superview.superview addConstraint:topConstraint];
[self.superview.superview addConstraint:bottomConstraint];

[self.superview.superview layoutIfNeeded];

self.alpha = 0;
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
    self.closeButton.hidden = NO;
    self.alpha = 1.0f;
    trailingConstraint.constant = 0;
    leadingConstraint.constant = 0;
    bottomConstraint.constant = 0;
    topConstraint.constant = 0;
    [self.superview.superview layoutIfNeeded];
}                completion:nil];

}

我在将视图添加到superview后调用该方法,并在关闭视图时调用相反的方法

工作正常。但是内部视图,UIWebview不会与动画一起调整大小,它会在动画开始之前占据最终大小,它会闪烁并变大(或者在关闭时变小),然后动画从自身开始并且自我调整正确。 / p>

可能出现什么问题?

webview没有大小限制,它有位置限制,与self基本相同 - > 0表示自我的四边,这些约束不会改变。

0 个答案:

没有答案