2017-06-06 6 views
0

UIViewが画面に表示されるときにアニメーショントランジションを使用しようとしています。 UIViewは正しく表示されますが、表示されてもアニメーションは表示されません。アニメーションブロックであなたのcoreView隠れコードの後に​​self.view.layoutIfNeeded()を追加UIViewトランジションアニメーションが実行されない

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    let coreView = UIView(frame: CGRect(x: 10, y: 10, width: 100, height: 100)) 
    coreView.backgroundColor = UIColor.cyan 
    coreView.layer.borderColor = UIColor.darkGray.cgColor 
    coreView.layer.borderWidth = 8 
    coreView.layer.cornerRadius = 15 
    coreView.isHidden = true 
    self.view.addSubview(coreView) 

    //The transition occurs here 
    UIView.transition(with: coreView, duration: 2, options: [.curveEaseInOut, .transitionCurlDown], animations: { 

     coreView.isHidden = false 
    }, completion: {_ in}) 

    } 

答えて

0

viewWillAppearメソッドが完了してからトランジションアニメーションを使用できない(アルファのような他のプロパティをアニメーションできます)まで、coreViewが正しく設定されていないため、これは機能しません。あなたは何ができるか

はこれです:

DispatchQueue.main.async { 
    coreView.isHidden = false 

    UIView.transition(with: coreView, duration: 2, options: [.curveEaseInOut, .transitionCurlDown], animations: { 
    }, completion: {_ in}) 

} 

これは、バックメインキューへの移行を派遣し、viewWillAppearメソッドが完了したとcoreViewが適切にセットアップされた後、それが起動します。

ところで、viewWillAppearはビューコントローラが表示されるたびに呼び出されるので、非表示にして別のcoreViewを返す場合は忘れないようにしてください。

+0

これが実行されました。それは今働く:) – SwiftyJD

0

してみてください。

1

isHiddenコアビューのプロパティは、アルファベットプロパティを使用します。

coreView.alpha = 0coreView.isHidden =真を交換してみてくださいとアニメーションブロックですべきことであるが、coreView.alpha = 1

coreView.isHidden =偽を置き換えます私は推測する。アニメーション化する必要があります。ありがとう。

+0

原則として、すべてのプロパティが* animatable *であるとは限りません。 UIViewのプロパティがアニメーション化可能な場合は、常に明示的にドキュメントに記載されています。 'isHidden'はアニメーション化できません。 – deadbeef

+0

階層からビューを追加または削除するときに使用されるトランジションアニメーションです。ストーリーボードにビューを追加すると機能しますが、このビューはプログラムによって作成されているため機能しません。 – SwiftyJD

関連する問題