2017-10-05 2 views
0

insertSegment(withTitle:at:animated)メソッドのアニメーションを停止する方法はありますか?私はセグメントがアニメーション化animated:falseを設定しても、これを見て:UISegmentedControlセグメントアニメーションを停止する方法

Animated gif of the bug

は赤いボールを無視してください。

Iコンポーネントを作成するために使用しているコードは:

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

制約設定がOKである、フレーム幅(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: ["", "", ""])でビューを起動するには、それは全体のコンポーネントを交換するん、これは

プロジェクトはスウィフト3.1を使用しています...ところで、この問題のために非常に重いソリューションです。

ありがとうございます。

+0

サンプルプロジェクトを共有できますか? –

+0

@Pedro Paulo Amorim:コードでどのように制約を設定しましたか? –

+0

@ Puneet Shama私は問題を解決しました。これは制約アニメーションに関連しています。私は今答えを掲示します。 –

答えて

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) 

このため、正しい解決策は、制約のビルド中に任意のアニメーションを避けるためです。

関連する問題