簡體   English   中英

如何停止UISegmentedControl段動畫

[英]How to stop UISegmentedControl segments animation

有什么辦法可以停止方法insertSegment(withTitle:at:animated)嗎? 即使我將animated:false設置為animated:false片段,也請看以下內容:

錯誤的GIF動畫

請忽略紅球。

我用來創建組件的代碼是:

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: ["", "", ""])開始視圖是否替換了整個組件,這是一個非常沉重的解決此問題的方法...

該項目使用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)

正確的解決方案是在構建約束時避免任何動畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM