2017-08-08 111 views
0

我設計了一個視圖。通常當我點擊一個按鈕時,這個視圖將顯示和隱藏。現在我正在嘗試使用左到右和從右到左來動畫顯示該視圖。以下是我的代碼,但它不起作用。請檢查一下。如何使用Swift將自定義視圖右至左右左右移動

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

是的。第一次點擊將顯示從右到左的視圖,然後第二次點擊將隱藏並顯示從左到右的動畫。 –

+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; 
    } 

寬度可以儘可能要expand.For比如我有用戶200.In視圖並加載它:按鈕點擊

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

是0,然後是200,同時展開,然後再摺疊爲0。 希望它會有所幫助。