在 Xamarin IOS 的 UITableview 中更改滑动以删除按钮高度
Posted
技术标签:
【中文标题】在 Xamarin IOS 的 UITableview 中更改滑动以删除按钮高度【英文标题】:Change swipe to delete button height in UITableview in Xamarin IOS 【发布时间】:2018-03-16 19:55:14 【问题描述】:我有一个表格视图,其中的单元格周围有一些填充。我实现了滑动删除功能,默认情况下删除按钮占据单元格高度。
我使用下面的 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】:请参阅this post。
iOS11之前的视图层次如下所示
UITableView -> UITableViewCell -> UITableViewCellDeleteConfirmationView -> _UITableViewCellActionButton
我看到你得到的是 UITableViewCellDeleteConfirmationView
而不是 Button 。
修改你的代码:
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;
【讨论】:
以上是关于在 Xamarin IOS 的 UITableview 中更改滑动以删除按钮高度的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.iOS 应用在 iOS 14.0 中询问本地网络权限