addArrangedSubview没有动画

时间:2016-02-16 17:39:03

标签: ios swift uistackview tzstackview

我将视图添加到TZStackView(应该与UIStackView基本相同,但旧版本具有后备版本),如下所示:

stackView.addArrangedSubview(subview)

stackViewsubview具有动态尺寸(自动布局)并自行调整大小。但是,这会发生在动画中(我认为由于addArrangedSubview,如果我将其添加为子视图并设置约束,则不会发生这种情况)。有没有办法停用动画?

2 个答案:

答案 0 :(得分:14)

在向UIStackView添加排列视图时禁用动画在iOS 9中无法正常运行。

解决方案是与布局分开执行添加:

// Add all views first.

for view in views {
    stackView.addArrangedSubview(view)
}

// Now force the layout in one hit, sans animation.

UIView.performWithoutAnimation {
    stackView.setNeedsLayout()
    stackView.layoutIfNeeded()
}

在iOS 9.3,Xcode 8.3.2上测试。 尚未在iOS 10或11上测试过。

答案 1 :(得分:5)

UIView performWithoutAnimation:将在没有动画的情况下执行其block参数:

UIView.performWithoutAnimation {
    stackView.addArrangedSubview(subview)
}