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

时间:2015-11-22 16:07:43

标签: ios

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

问题:

我有一个UITableViewCell具有自动布局,笔尖中的默认高度为300. 300是我UIViewControllers之一的正确尺寸。

我在容器视图中使用UINavigationController,容器视图下方是名为UIView的{​​{1}}。

在容器视图中有两个FooterView; UIViewControllersVC1

当我将VC2推到VC2时,我也会更改FooterView的高度VC1高度常量。

我在动画块中执行此操作,NSLayoutConstraint

我将[self.view setNeedsLayout];内的UITableViewCell的高度设置为200。

现在的问题是,当我从VC2转换为VC1时,您还会看到VC2的动画效果为300到200。

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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