gpt4 book ai didi

ios - 如何停止 UISegmentedControl 分段动画

转载 作者:行者123 更新时间:2023-11-30 12:06:54 25 4
gpt4 key购买 nike

有什么方法可以停止方法insertSegment(withTitle:at:animated)的动画吗?即使我设置了动画片段,看看这个:

Animated gif of the bug

请忽略红球。

我用来创建组件的代码是:

let segmentedControl = UISegmentedControl()
segmentedControl.sendActions(for: UIControlEvents.valueChanged)
segmentedControl.tintColor = UIColor.white
segmentedControl.selectedSegmentIndex = 0
view.addSubview(segmentedControl)

约束设置没问题,帧宽度(两侧100% - 16像素)始终相同。问题与段有关,而不是父 View 。

要添加段(这在设置检查后发生):

segmentedControl.insertSegment(withTitle: "Bolinha 1", at: 0, animated: false)

设置框架不起作用,因为问题与内部 View 有关。

我尝试使用 setAnimationsEnabled(false) 删除它,但不起作用。

编辑1:使用segmentedControl.setWidth(segmentedControl.frame.width/3, forSegmentAt: 0)不起作用。

编辑2:使用 UISegmentedControl(items: ["", "", ""]) 启动 View 会替换整个组件,顺便说一句,这是解决此问题的一个非常繁重的解决方案。 ..

该项目使用 Swift 3.1。

谢谢。

最佳答案

我发现动画修改了内部组件的行为。

删除此动画解决了问题:

view.setNeedsUpdateConstraints()
view.updateConstraintsIfNeeded()

UIView.animate(
withDuration: 0.5,
delay: 0.5,
usingSpringWithDamping: 1.0,
initialSpringVelocity: 2,
animations: { [weak self] in
self?.view.layoutIfNeeded()
}, completion: nil)

正确的解决方案是在构建约束期间避​​免任何动画。

关于ios - 如何停止 UISegmentedControl 分段动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com