UITableView + добавление содержимого сверху
Мне нужно добавить пустое пространство в верхней части моего UITableView, который не влияет на размер области содержимого. Сдвиг содержимого вниз или добавление пустой ячейки - это НЕ то, что я хочу сделать. Вместо этого я просто хочу смещение.
Как?
Ответы
Ответ 1
Я не уверен, что следую за вами, но думаю, что у меня такое же затруднение. В моем случае я должен выделить некоторое место для ADBannerView в верхней части экрана, чтобы я добавил метод viewDidLoad, который я добавил:
[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];
это значения UIEdgeInsetsMake (вверху, слева, внизу, справа).
В качестве альтернативы то же самое со Swift:
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
Swift 4.2:
self.tableView.contentInset = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)
Ответ 2
Вы можете добавить "пустой" вид заголовка в таблицу... это даст исходный вид таблицы для смещения, но как только вы начнете прокрутку, смещение исчезнет. Не уверен, что вы хотите.
Если вам нужно постоянное смещение и еще не используете заголовки разделов, вы можете создать смещение аналогично выше, создав пользовательские представления для заголовков разделов, особенно если у вас есть только один раздел, это может дать вам вид постоянное смещение.
Я могу опубликовать образец кода, если это похоже на то, что вы ищете.
Ответ 3
Я объединил ответ Джигзата с:
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 320, 1) animated:NO];
в
- (void)viewDidLoad
поэтому первая ячейка не находится наверху.
Ответ 4
Похоже, вы хотите обернуть "Просмотр" вокруг своего UITableView
. Если у вас есть UITableViewController
в IB, то UITableView
будет автоматически установлен в view
of UITableViewController
. Вы изменяете свойство view
на нормальный UIView
и добавляете туда UITableView
и присваиваете ему смещение.
--- Edit ---
Я просто прочитал свой пост и подумал, что это мало смысла:) Когда вы создаете UITableViewController
, вы получаете это (в псевдокоде):
UITableViewController.view = UITableView
Это означает, что фактическая таблица займет все пространство, и вы даже не сможете добавлять другие виды. Поэтому вам нужно изменить
UITableViewController.view = UIView
и добавьте таблицу к этому UIView
Ответ 5
Я совместил этот ответ с этим: fooobar.com/questions/49076/...
Чтобы табличное представление отображалось в верхней части вставки содержимого, чтобы пространство в верхней части не было обрезано за счет небольшой прокрутки табличного представления при первоначальном появлении представления. (18 - мой главный разрыв)
[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];
Ответ 6
Swift 5.1
tableView.contentInset.top = 100