2016-11-29 3 views
3

Wenn die Animation ausgeführt wird, um die Breite der Tabellenansicht zu verringern, springt der Papierkorb zuerst nach links, bevor die Animation tatsächlich beginnt. Die Animation wird im ViewController ausgeführt.UIButton in UITableViewCell springt, wenn die UITableView-Breite animiert ist

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: after

Der Knopf hat eine Einschränkung, so dass sie in von der rechten Seite der Tabelle Sichtzelle immer 8 Pixel ist (die eine XIb ist).

Was ich wollte/erwartet war, dass die Schaltfläche im Laufe der Zeit mit der Animation der TableView-Breite verschoben wurde. Gehe ich fälschlicherweise davon aus, dass das automatische Layout dafür sorgen würde?

Ich könnte reloadData() auf der Tabellenansicht aufrufen und die Schaltfläche in cellForRowAtIndexPath manuell neu positionieren, aber ich hoffte auf eine etwas elegantere Weise.

Antwort

1

Sie möchten auch die Schaltflächen animieren. Sie können einen Verweis auf Ihre Zellen mit bekommen:

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

Und dann die Schleife durch die Zellen und die x-Position ändern, zB:

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); 

Und dann auch Ihre Tabellenansicht Breite animieren, wie Sie bereits haben erledigt. Die Animationen sollten gleichzeitig ausgeführt werden und Ihre Schaltfläche sollte sich mit der Animation für die Breite der Tabellenansicht bewegen.

+0

Das ist genau das, was ich getan habe :) – empo

0

Es ist ein Auto-Layout-Problem stellen Sie sicher, dass Sie 2 horizontale Abstände Constraints eine mit "mehr oder gleich"> = Ihre minimale Breite, die Sie wollen und "weniger als oder gleich" mit < = Ihre maximale Speicherplatz Sie wollen.

Bitte zögern Sie nicht für weitere Informationen

Verwandte Themen