2017-08-08 19 views
0

私はビューを設計しました。通常、ボタンをクリックすると、このビューは表示と非表示になります。今私は左から右と右から左にそのビューをアニメートしようとしています。以下は私のコードですが、動作しません。親切にチェックしてください。スウィフトを使用して右から左、左から右にカスタムビューをアニメーション化する方法

if(self.openedView) { 
     self.openedView = false; 
     UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseIn, animations: {() -> Void in 



     }, completion: {(_ finished: Bool) -> Void in 
     }) 

     shareMainView.isHidden = true; 
    } else { 
     self.openedView = true; 
     UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseOut, animations: {() -> Void in 
     }, completion: {(_ finished: Bool) -> Void in 
      /*done*/ 
     }) 

     shareMainView.isHidden = false; 
    } 

shareMainView.isHidden = false;これはアニメーションで開くと表示されません私の見解です。

+0

ビューを左から右に展開し、右から左に崩壊させたいですか? –

+0

はい。最初のクリックは右から左のビューを表示し、次に2番目のクリックは非表示になり、左から右にアニメーションが表示されます。 –

+0

あなたによると、あなたは 'shareMainView'のフレームもそれの制約も変えていません。ですから、開いた状態のような拘束のフレームを使って、幅(150など)を設定し、アニメーションブロックの幅を0.0に設定してみてください。 –

答えて

0

あなたの投稿コードによれば、shareMainViewのフレームもそれの制約も変更されていません。ですから、開いた状態のような拘束のフレームを使って、幅(150など)を設定し、アニメーションブロックの幅を0.0に設定してみてください。

アニメーションの最後のコードにshareMainView.layoutIfNeeded()、完了ブロックにshareMainView.isHidden = falseを使用することを忘れないでください。アニメーションを適切に表示するのに役立ちます。ビューで

0

は負荷ました:

if(self.openedView) { 
     self.openedView = false; 
     UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseIn, animations: {() -> Void in 
     shareMainView.layoutIfNeeded() 
     shareMainView.frame = CGRectMake(_aview.frame.origin.x, _aview.frame.origin.y, 200, _aview.frame.size.height); 


     }, completion: {(_ finished: Bool) -> Void in 
     }) 

     shareMainView.isHidden = true; 
    } else { 
     self.openedView = true; 
     UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseOut, animations: {() -> Void in 
     shareMainView.layoutIfNeeded() 
     shareMainView.frame = CGRectMake(_aview.frame.origin.x, _aview.frame.origin.y, 0, _aview.frame.size.height); 

     }, completion: {(_ finished: Bool) -> Void in 
      /*done*/ 
     }) 

     shareMainView.isHidden = false; 
    } 

幅は同じくらいあなたが200.Inビューには、それを読み込むなかった私は、ユーザーが持っている例をexpand.Forしたいようになりますボタンのクリックで

shareMainView.frame = CGRectMake(_aview.frame.origin.x, _aview.frame.origin.y, 0, _aview.frame.size.height); 

0で展開してから200を折りたたみながら0になります。 お待ちしています。

関連する問題