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设置背景色,因为它不会在给定旋转事件时自行调整。见: