禁用一个视图的自动布局动画

Ric*_*nde 5 ios

对不起,我不知道一个更好的头衔.

问题:

我有一个UITableViewCell自动布局,笔尖的默认高度是300. 300是我的一个正确的大小UIViewControllers.

我在UINavigationController容器视图中使用了一个容器视图,在容器视图下面是一个UIView被调用的FooterView.

在容器视图中有两个UIViewControllers; VC1VC2.

当我推VC2VC1,我也改变FooterView的高度与它的NSLayoutConstraint高度不变.

我正在动画块里面这样做 [self.view setNeedsLayout];

我将UITableViewCell内部的高度设置VC2为200.

现在的问题是,当我转换VC1VC2你时,你也会看到UITableViewCell动画从300到200.

我的猜测是,这是因为动画块.我通过删除动画来测试它,并且单元格没有动画(如预期的那样).

有没有办法阻止这个动画链接?

如果我不够清楚,我很抱歉.

Ric*_*nde 9

我需要做的就是覆盖layoutSubviews单元格内部:

- (void)layoutSubviews
{
    [UIView performWithoutAnimation:^{
        [super layoutSubviews];
        [self.contentView layoutIfNeeded];
        _shadowView.layer.shadowPath = [UIBezierPath bezierPathWithRect:_shadowView.bounds].CGPath;
    }];
}
Run Code Online (Sandbox Code Playgroud)