Iphone 如何定位UITableView(MonoTouch)

Iphone 如何定位UITableView(MonoTouch),iphone,xamarin.ios,uitableview,Iphone,Xamarin.ios,Uitableview,给定以下代码: public class MainTableController : UITableViewController { // Allow us to set the style of the TableView public MainTableController(UITableViewStyle style) : base(style) { } public override void ViewDidLoad () {

给定以下代码:

public class MainTableController : UITableViewController
{
    // Allow us to set the style of the TableView
    public MainTableController(UITableViewStyle style) : base(style)
    {
    }

    public override void ViewDidLoad ()
    {   
        TableView.DataSource = new MainTableDataSource();
        TableView.Delegate = new MainTableDelegate(this);

        TableView.BackgroundColor = UIColor.FromPatternImage(UIImage.FromFile ("Content/Background-Home@2x.png"));

        TableView.Bounces = false;

        base.ViewDidLoad ();
    }
}
考虑到以下输出:


如何更新代码,使表单元格组从页面的一半开始?实际像素并不重要,我只是想弄清楚属性要修改的位置。

在UITableViewController中手动定位UITableView不是一个好主意。话虽如此,我认为调整ContentInset属性应该可以让您达到需要的目的:

this.TableView.ContentInset = new UIEdgeInsets(this.TableView.Center.Y, 0, 0, 0);
这会将第一个节/单元格向下推到指定的UIEdgeInset.Top值

编辑:根据评论中的澄清

如果您需要保持背景视图的位置…您可能会更幸运地为第一个部分创建HeaderView,并将其帧增加到足以向下移动第一个单元格的大小:

public override UIView GetViewForHeader (UITableView tableView, int sectionIdx)
{
    if(sectionIdx == 0) { 

        // adjust appropriate index above ^

        var view = new UIView();
        view.Frame = new RectangleF(...) // adjust your frame here
        return view;    
    }
}

在UITableViewController中手动定位UITableView不是一个好主意。话虽如此,我认为调整ContentInset属性应该可以让您达到需要的目的:

this.TableView.ContentInset = new UIEdgeInsets(this.TableView.Center.Y, 0, 0, 0);
这会将第一个节/单元格向下推到指定的UIEdgeInset.Top值

编辑:根据评论中的澄清

如果您需要保持背景视图的位置…您可能会更幸运地为第一个部分创建HeaderView,并将其帧增加到足以向下移动第一个单元格的大小:

public override UIView GetViewForHeader (UITableView tableView, int sectionIdx)
{
    if(sectionIdx == 0) { 

        // adjust appropriate index above ^

        var view = new UIView();
        view.Frame = new RectangleF(...) // adjust your frame here
        return view;    
    }
}

手动定位有什么害处?我是新手,如果你能建议一个更好的解决方案来满足我的需求,请让我知道,因为我想遵循最佳实践。感谢您的回答。通常,UIViewController的视图(UITableViewController仅从UIViewController继承)总是希望全屏显示,除非它使用iOS 5.x中的自定义容器API。一句话:他们已经记录了,如果手动定位,你会有不稳定的行为,并且他们已经规定了更好的方法。上面的代码应该会给你想要的效果。谢谢。这可能是一个不同的问题,但如果您注意到在我上面的代码中,我使用了一个背景图像。当我实现您的解决方案时,它也会向下推背景图像。这个问题最初的原因是因为在UITableView后面有一个我需要可见的徽标。您的解决方案将UITableView向下推,但图像也向下推。好的,我调整了答案以反映澄清。另外,我会避免使用UIColor.FromPatternImage设置背景色,因为它不会在给定旋转事件时自行调整。请看:手动定位的危害是什么?我是新手,如果你能建议一个更好的解决方案来满足我的需求,请让我知道,因为我想遵循最佳实践。感谢您的回答。通常,UIViewController的视图(UITableViewController仅从UIViewController继承)总是希望全屏显示,除非它使用iOS 5.x中的自定义容器API。一句话:他们已经记录了,如果手动定位,你会有不稳定的行为,并且他们已经规定了更好的方法。上面的代码应该会给你想要的效果。谢谢。这可能是一个不同的问题,但如果您注意到在我上面的代码中,我使用了一个背景图像。当我实现您的解决方案时,它也会向下推背景图像。这个问题最初的原因是因为在UITableView后面有一个我需要可见的徽标。您的解决方案将UITableView向下推,但图像也向下推。好的,我调整了答案以反映澄清。另外,我会避免使用UIColor.FromPatternImage设置背景色,因为它不会在给定旋转事件时自行调整。见: