Xamarin.Forms:使用公开按钮时删除缩进

时间:2015-02-25 16:14:25

标签: c# ios uitableview xamarin.ios xamarin.forms

我想在我的表格视图单元格上使用公开按钮。因此,我使用此自定义渲染器:

using HelloXamarinFormsWorld;
using HelloXamarinFormsWorld.iOS;
using UIKit;
using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using System.Drawing;
using ObjCRuntime;

/* Example of using a custom renderer to get the > disclosure indicator to appear */
[assembly: ExportRenderer (typeof (EmployeeCell), typeof (EmployeeCellRenderer))]

namespace HelloXamarinFormsWorld.iOS
{
    public class EmployeeCellRenderer : ViewCellRenderer
    {
        public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
        {
            var cell = base.GetCell (item, reusableCell, tv);

            cell.Accessory = UITableViewCellAccessory.DisclosureIndicator;

//          // Remove seperator inset
//          if (cell.RespondsToSelector (new Selector ("setSeparatorInset:"))) {
//              cell.SeparatorInset = UIEdgeInsets.Zero;
//          }
//          // Prevent the cell from inheriting the Table View's margin settings
//          if (cell.RespondsToSelector (new Selector ("setPreservesSuperviewLayoutMargins:"))) {
//              cell.PreservesSuperviewLayoutMargins = false;
//          }
//          // Explictly set your cell's layout margins
//          if (cell.RespondsToSelector (new Selector ("setLayoutMargins:"))) {
//              cell.LayoutMargins = UIEdgeInsets.Zero;
//          }

            return cell;
        }
    }
}

如果我设置了披露指标,我会看到以下屏幕: with disclosure indicator

通常它看起来如下所示 without disclosure indicator

我尝试使用插图,但必须在WillDisplay中,并且也不会删除缩进。在this thread rmarinho

  

您可以通过设置UIEdgeInsets进行修复,我认为我在ExtendedViewCell上使用了Padding属性。

但我不知道应该在哪里这样做。或者我该如何修复缩进?

修改

使用cell.SeparatorInset = new UIEdgeInsets(0,0,0,0);没有帮助。

1 个答案:

答案 0 :(得分:1)

我想这应该是Xamarin.Forms中的错误。

在查看反编译代码后,我发现默认ViewCellRenderer试图通过计算单元格的内容视图来居中,这是不正确的,因为它没有考虑{{1的大小}}

因此,解决方法是手动插入指标(这是ExtendedViewCell所做的)并且不使用默认的披露指标。