swift 不带动画的addedSubview

xyhw6mcr  于 2023-10-15  发布在  Swift
关注(0)|答案(2)|浏览(95)

bounty还有3天到期。回答此问题可获得+500声望奖励。Fattie想要奖励现有答案

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

stackView.addArrangedSubview(subview)

stackViewsubview具有动态大小(自动布局)并自行调整大小。然而,这发生在动画中(我认为由于addArrangedSubview,如果我将其添加为子视图并设置约束,则不会发生)。有没有办法让动画失效?

hjzp0vay

hjzp0vay1#

在iOS 9中,在向UIStackView添加排列视图时禁用动画无法正常工作。
解决方案是从布局中单独执行添加:

// 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上测试。

g9icjywg

g9icjywg2#

UIView performWithoutAnimation:将执行它的块参数,而不执行动画:

UIView.performWithoutAnimation {
    stackView.addArrangedSubview(subview)
}

相关问题