Ответ 1
Вам просто нужно установить свойство contentInset
в виде таблицы. Вы можете установить значение в соответствии с вашими потребностями.
self.tableView.contentInset = UIEdgeInsetsMake(0, -15, 0, 0);
РЕЗУЛЬТАТЫ ВЫХОДА
Если я создаю UITableViewController
, например, через Файл → Новый проект... → iOS → Приложение "Мастер-детализация" в Xcode, создается UITableView
с ячейкой прототипа.
Сгенерированная иерархия представлений:
Левое "поле" автоматически создается между левым краем ячейки UIView
и текстом
UILabel
, как показано ниже, в оранжевом.
Это приводит к соответствующему разграничению между краем экрана устройства и текстом UILabel
во время выполнения:
Итак, где ширина этого зазора и как его можно отрегулировать?
Элементы управления в Инспекторе размеров для UILabel выделены серым цветом:
Мой предпочтительный вариант должен был бы установить ширину этого пробела внутри Interface Builder, но я также хотел бы понять, где этот пробел задан, и как его программно изменить.
Вам просто нужно установить свойство contentInset
в виде таблицы. Вы можете установить значение в соответствии с вашими потребностями.
self.tableView.contentInset = UIEdgeInsetsMake(0, -15, 0, 0);
РЕЗУЛЬТАТЫ ВЫХОДА
Перейдите на Main.storyboard
> выберите UITableViewCell
> Attributes Inspector
. Измените выпадающий список Разделитель со вкладок по умолчанию на Пользовательские вставки. Изменить левую вставку с 15 на 0
Начиная с iOS 8 доступно свойство ячейки layoutMargins
.
Таким образом, правильный способ настройки полей полей устанавливает это свойство в tableView:cellForRowAtIndexPath
или в вашем обычном UITableViewCell
следующим образом:
override func awakeFromNib() {
super.awakeFromNib()
self.layoutMargins = UIEdgeInsetsZero //or UIEdgeInsetsMake(top, left, bottom, right)
self.separatorInset = UIEdgeInsetsZero //if you also want to adjust separatorInset
}
Я надеюсь, что это может помочь кому-то.
Просто добавьте метод в ваш код, как указано в ссылке ниже
Как устранить поле с левой стороны UITableView, не создавая пробел справа?
Метод похож на:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsZero];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
cell.preservesSuperviewLayoutMargins = NO;
[cell setLayoutMargins:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setSeparatorInset:)]){
[cell setSeparatorInset:UIEdgeInsetsZero];
}
}
В TableView "Инспектор атрибутов" установите вкладки Separator в "Custom" с помощью Left = 0. Это все, что вам нужно сделать!
Как упоминалось WTIFS, свойство UITableViewCell
indentation
- отличный способ отпечатать текстовые метки во встроенных стилях ячеек. Просто сделайте что-нибудь подобное, чтобы достичь хорошего левого края:
cell.indentationLevel = 2;
Это, однако, не будет работать для imageView.
Если вы используете xib для своей ячейки, убедитесь, что параметр "Относительно поля" не установлен. Вы можете проверить это через инспектор, как показано на следующем снимке экрана:
Вот быстрая версия ответа Четана:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
tableView.separatorInset = UIEdgeInsets.zero
tableView.layoutMargins = UIEdgeInsets.zero
cell.preservesSuperviewLayoutMargins = false
cell.layoutMargins = UIEdgeInsets.zero
cell.separatorInset = UIEdgeInsets.zero
}
Думаю, я просто придумал легкое решение. лол.
У верхнего ответа есть некоторая проблема... он уменьшает левый пробел, но приводит к правильному разрыву.
Я использовал ограничения в интерфейсе Builder.
Сначала добавьте в представление таблицы -15 left margin constrain.
Затем добавьте в ячейку таблицы Отступы, чтобы содержимое выглядело лучше.
↘
Вот несколько пошаговых фото:
Добавьте ограничение. Не забудьте снять "расстояние до ближайшего соседа".
Ячейки таблицы будут перемещаться влево. Но кажется слишком близким к марже.
Итак, выберите ячейку таблицы и добавьте некоторые отступы в нужную область.
И если вы хотите изменить только левое поле только текстовой метки ячейки, измените Horizontal Space Constraint 'Constant'
на 16 или 8 на основе нужного дополнения. (Это в файле nib). Если вы не можете перейти к "константе" Выберите метку, измените координату x в представлении FrameRectangle, а затем щелкните на значке ограничения слева)