UITableView +在顶部添加内容偏移


86

我需要在UITableView的顶部添加一些不影响内容区域大小的空格。向下移动内容或添加空白单元格不是我想要的。相反,我只想要一个偏移量。

怎么样?

Answers:


288

我不确定是否要关注您,但我想我也有同样的困境。就我而言,我必须在屏幕顶部为ADBannerView留一些空间,所以我所做的就是在我添加的viewDidLoad方法中:

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

它需要的值是UIEdgeInsetsMake(top,left,bottom,right)。

或者与Swift相同:

self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)

Swift 4.2:

self.tableView.contentInset = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)

1
需要这样做,以便在顶部不显示“正在加载”单元格,在渲染该单元格时切换回自我插入,在发生reloadData时切换回-50顶部。谢谢 !
丹尼尔(Daniel)

23
您可能还需要调整滚动指示器:[self.tableView setScrollIndicatorInsets:UIEdgeInsetsMake(50,0,0,0)];
bdev

8
是的,甚至更好,调整滚动指示器的方法如下:[self.tableView setScrollIndicatorInsets:[self.tableView contentInset]];
David Hernandez 2014年

5

您可以在表中添加“空”标题视图...这将使表的初始外观具有偏移量,但是一旦开始滚动,偏移量就会消失。不确定这就是您想要的。

如果需要永久偏移量并且尚未使用节标题,则可以通过为节标题创建自定义视图来创建与上面类似的偏移量,特别是如果您只有一个节,这可以使您看起来像是永久偏移量。

如果听起来像您想要的那样,我可以发布示例代码。


4

我结合了Jigzat的答案:

[self.tableView scrollRectToVisible:CGRectMake(0, 0, 320, 1) animated:NO];

- (void)viewDidLoad

因此第一个单元格不在顶部。


4

迅捷5.1

在viewDidLoad中添加以下内容

tableView.contentInset.top = 100

真的,这就是全部。

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.contentInset.top = 100
}

2

听起来好像您想在周围包裹一个“视图” UITableView。如果你有一个UITableViewController在IB的UITableView将被自动设置到viewUITableViewController。您将view属性更改为法线,UIView然后UITableView在其中添加您的属性并为其设置偏移量。

---编辑---我刚刚阅读了我的文章,并认为它没有什么意义:)当您创建一个时,UITableViewController您会得到此信息(使用伪代码):

UITableViewController.view = UITableView

这意味着实际表将占用整个空间,您甚至无法添加其他视图。所以你需要改变

UITableViewController.view = UIView

并添加您的表 UIView


0

我将此答案与此答案结合在一起:https : //stackoverflow.com/a/9450345/1993937

为了使tableView出现在内容插图的顶部,因此,当视图最初出现时,通过使tableView略微向下滚动,不会切断顶部的空间。(18是我最大的差距)

[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
 CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.