在Xamarin IOS中更改滑动以删除UITableview中的按钮高度

时间:2018-03-16 19:55:15

标签: xamarin.ios

我有一个表格视图,其中的单元格周围有一些填充。我实现了滑动删除功能,默认情况下,删除按钮占用单元格高度。

我使用IOS 10的下面代码将其与可见单元格高度对齐,并以一种奇怪的方式拧紧按钮高度。注意:我在IOS 11中使用不同的代码集可以正常工作,因为IOS 10和IOS 11之间的处理方式不同。

但是在IOS 10的代码下方拧紧按钮高度。看起来布局子视图在用户滑动时被多次调用,这导致按钮高度变化很大。关于如何解决这个问题的任何想法。

public override void LayoutSubviews()
        {
            base.LayoutSubviews();
                if (Convert.ToInt16(UIDevice.CurrentDevice.SystemVersion.Split('.')[0]) < 11)
                {
                    foreach (var view in this.Subviews)
                    {
                        if (view.Class.Name.ToString() == "UITableViewCellDeleteConfirmationView")
                        {
                            CGRect newFrame = view.Frame;
                            newFrame.Y = newFrame.Y + 6;
                            newFrame.Height = newFrame.Height - 12;
                            view.Frame = newFrame;
                        }
                    }
                }
        }

1 个答案:

答案 0 :(得分:0)

请参阅this post

iOS11之前的视图层次结构如下所示

  

UITableView - &gt; UITableViewCell - &gt; UITableViewCellDeleteConfirmationView - &gt; _UITableViewCellActionButton

我看到你得到了UITableViewCellDeleteConfirmationView而不是按钮。

修改您的代码:

foreach (UIView subview in this.Subviews)
{
    if (subview.Class.Name.ToString() == "UITableViewCellDeleteConfirmationView")
    {
        foreach (var view in subview.Subviews)
        {
            if (view.Class.Name.ToString() == "_UITableViewCellActionButton")
            {
                CGRect newFrame = view.Frame;
                newFrame.Y = newFrame.Y + 6;
                newFrame.Height = newFrame.Height - 12;
                view.Frame = newFrame;
            }
        }
    }
}