当UITableView的宽度发生动画变化时,UITableViewCell中的UIButton会跳动。

3

当动画执行减少表视图(tableview)宽度时,垃圾桶按钮(Trash button)会在动画实际开始之前先向左跳。该动画是在视图控制器(ViewController)中执行的。

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文件)。

我想要/ 期望的是按钮随着表格视图宽度动画的变化而滑动。我错认为自动布局会处理这个问题吗?

我可以在cellForRowAtIndexPath中调用reloadData()来重新定位按钮,但希望有一个更加优雅的方法。

2个回答

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

然后,像你已经做过的那样,动画化你的表视图宽度。这些动画应该同时运行,你的按钮应该随着表视图宽度的动画移动。


这正是我最终所做的 :) - empo

0

这是一个自动布局问题,请确保您创建了两个水平间距约束,一个是“大于或等于”您想要的最小宽度,另一个是“小于或等于”您想要的最大空间。

如需更多信息,请不要犹豫。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接