将UITableView下移(UITableViewController)

15

我想知道是否可以将UITableView向下移动50像素。如果我使用的是UITableViewController,那么这通常需要在UIViewController上添加一个表视图来实现,但是我能否保留UITableViewController并实现这个效果呢?


问题有点不清楚,能否再解释一下?你所说的“保持它作为UITableViewController”是什么意思? - Spring
2
我的意思是,如果我有一个UIViewController并添加了一个TableView,我可以定位TableView的位置。然而,当使用UITableViewController时,我不知道如何将表格向下移动,因为在.xib文件中选择它时,x和y坐标不可编辑。 - Michael M
你不能切换到带有UITableView子视图的UIViewController吗?这样会给你更多的灵活性,有什么原因吗? - James P
8个回答

43

我曾经遇到同样的问题,而上面的答案并没有起作用。以下方法可行:

[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];

谢谢!完美地工作了! - Antony Raphel
但是仍然可以在插入的区域上滚动。我该如何使其不可滚动? - Ray Tso
对于Swift,代码如下:self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0) - Zion
有效的答案对我来说可行,在Swift4.1,Xcode 9.3中,它更改为self.tableView.contentInset = UIEdgeInsets(top: 84, left: 0, bottom: 0, right: 0) - infinity_coding7

8

我的解决方案是重写tableViewcontroller的方法viewWillLayoutSubviews

- (void) viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    self.tableView.frame = CGRectMake(0,0,CGRectGetWidth(self.view.frame),300);
}

在各种情况下,无论屏幕方向如何变化,这款产品都能为我提供出色的表现。


1
我认为这是最佳解决方案。 - shannoga
对于Xamarin iOS,这是有效的。被接受的答案不行。 - BBH1023

4

UITableView 实际上是一个 UIScrollView。这意味着你可以滚动到想要的位置。此链接 显示了如何实现此功能,包括示例代码和讨论。

编辑: 为了将整个表格视图下移,只需使用:

float yOffset = 50.0f; // Change this how much you want!
tableview.view.frame =  CGRectMake(tableview.view.frame.origin.x, tableview.view.frame.origin.y + yOffset, tableview.view.frame.size.width, tableview.view.frame.size.height);

希望这能帮到您!

是的,我明白了,我不是在想如何向下滚动它,我想知道如何将整个表格向下移动视图,以留出顶部一些文本的空间。谢谢回复! - Michael M
你可以将它添加到你想要调用的位置。如果你想在用户执行任何操作之前就调用它,那么将其放置在 viewDidLoad: 方法中。如果你想将其与按钮绑定,那么将其放置在按钮的 IBAction 中等等。 - msgambel
如果他把它放在viewDidLoad上,整个视图很可能会产生非常不愉快的“跳跃”效果... - Joze
这对我不起作用,但它似乎是一个不错的解决方案,也是目前为止最好的答案,谢谢!我已经决定绕过这个问题,保持现状。非常感谢! - Michael M

2

如果您想在表格顶部添加一个UI元素,为什么不直接将其设置为 tableHeaderView 呢?

UILabel *someLabel;

// configure label

self.tableView.tableHeaderView = someLabel;

2

由于表格视图是由UIScrollView支持的,因此您可以使用内容偏移量进行移动。

  self.tableView.contentOffset = CGPointMake( x,  y);

你可能想要在UIView动画中包装它


1

Swift 2.2:

将tableView在UITableViewController中向下移动:

let edgeInsets = UIEdgeInsetsMake(20, 0, 0, 0)
self.tableView.contentInset = edgeInsets

1
如果您需要在表格视图后面(或上面)添加一个视图,则必须子类化UIViewController,然后添加一个UITableView。另一种解决方案可能是设置表格的标题视图(reference),但在这种情况下,请记住此视图将与表格一起滚动。有关UITableViewController限制的更多信息,请参见本文:“Clean table view code”。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接