我有一个表格视图,其中的单元格周围有一些填充。我实现了滑动删除功能,默认情况下,删除按钮占用单元格高度。
我使用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;
}
}
}
}
答案 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;
}
}
}
}