有没有办法停止方法insertSegment(withTitle:at:animated)
的动画?即使我将animated:false
段设置为动画,请查看:
请忽略红球。
我用来创建组件的代码是:
let segmentedControl = UISegmentedControl()
segmentedControl.sendActions(for: UIControlEvents.valueChanged)
segmentedControl.tintColor = UIColor.white
segmentedControl.selectedSegmentIndex = 0
view.addSubview(segmentedControl)
约束设置正常,帧宽(100% - 两侧16像素)始终相同。问题与段有关,而不是父视图。
添加细分(在设置检查后会发生这种情况):
segmentedControl.insertSegment(withTitle: "Bolinha 1", at: 0, animated: false)
设置框架不起作用,因为问题与内部视图有关。
我尝试使用setAnimationsEnabled(false)
删除它但不起作用。
编辑1:使用segmentedControl.setWidth(segmentedControl.frame.width/3, forSegmentAt: 0)
不起作用。
编辑2:使用UISegmentedControl(items: ["", "", ""])
启动视图会替换整个组件,这对于解决此问题非常重要... btw ...
该项目使用Swift 3.1。
谢谢。
答案 0 :(得分:0)
我发现动画修改了内部组件的行为。
删除此动画解决了问题:
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)
正确的解决方案是在构建约束期间避免任何动画。