2016-11-29 50 views
3

當執行動畫以減少表格視圖寬度時,在動畫實際啓動之前,「垃圾箱」按鈕首先跳到左邊。 動畫在ViewController中執行。UITableViewCell中的UIButton在UITableView寬度動畫時跳轉

UIView.Animate(0.05d, 0.15d, UIViewAnimationOptions.CurveEaseInOut,() => 
    { 
     OrderProductsTableView.Frame = new CGRect(LeftPanel.Frame.Width + 130f, OrderProductsTableView.Frame.Location.Y, View.Frame.Size.Width - LeftAddProductPanel.Frame.Width, OrderProductsTableView.Frame.Size.Height); 
     RightPanelFooter.Alpha = 0; 
    }, null); 

before

後: after

該按鈕有一個約束,以便它始終是8像素中從表視圖單元格的右側(這是一個XIB)。

我想要/預期的是按鈕隨着tableview寬度的動畫變化而滑過。我錯誤地認爲自動佈局會照顧到這一點?

我可以在桌面上調用reloadData(),並在cellForRowAtIndexPath中手動重新定位按鈕,但希望稍微更優雅的方式。

回答

1

您也想要爲按鈕設置動畫效果。你可以得到一個參考你的細胞:通過細胞

List<UITableViewCell> cells = OrderProductsTableView.VisibleCells.ToList(); 

然後循環和修改x位置,例如:

UIView.Animate(0.05d, 0.15d, UIViewAnimationOptions.CurveEaseInOut,() => 
{ 
    foreach (UITableViewCell cell in cells) 
    { 
      MyCellType mCell = cell as MyCellType; 
      mCell.trashButton.Frame = new CGRect(newXValue, newYValue, newWidthValue, newHeightValue); 
    } 

}, null); 

然後還動畫的表視圖的寬度,你已經完成。這些動畫應同時運行,並且按鈕應隨「表視圖」寬度的動畫一起移動。

+0

這就是我最終做的:) – empo

0

這是一個自動佈局問題,請確保您創建2個水平間距約束,其中「多於或等於」> =您想要的最小寬度,「小於或等於」< =您想要的最大空間。

請不要猶豫,以獲取更多信息