У меня есть UITableView
где разделители не имеют полной ширины. Это заканчивается как 10 пикселей перед левой стороной. Я играл с этим кодом в viewDidLoad()
.
self.tableView.layoutMargins = UIEdgeInsetsZero;
Также в раскадровке, когда вы можете выбрать пользовательские или стандартные селекторы. Теперь все заполненные ячейки не имеют селекторов полной ширины, но пустые ячейки имеют полную ширину.
Как я могу это исправить?
ios
objective-c
iphone
uitableview
Тимо Ченгиз
источник
источник
UITableView
имеет свойствоseparatorInset
. Установите вкладкуUITableView
разделителя строк на ноль. Также вы можете изменитьseparatorInset
с раскадровкиОтветы:
Это работало для меня на устройствах iOS 8.4 - 9.0, использующих Xcode 6.4 и Swift 1.2:
Swift 5 Обновление:
источник
Я получил ответ из этого поста: iOS 8 UITableView разделитель 0 не работает
Просто добавьте этот код на свой
UITableViewController
источник
viewDidLayoutSubviews
не нуженВ твоем
UITableViewCell
Перейдите к Инспектору атрибутов в Интерфейсном Разработчике и просто измените «15» на 0. Сделайте это для всех ячеек, которые вы хотите изменить.
Возможно, вам придется добавить
[cell setLayoutMargins:UIEdgeInsetsZero];
в свойtableViewCell
источник
для Swift 3:
источник
UITableViewCell
left
и / илиright
поля. (По умолчаниюleft: 15
,right: 0
)Посмотрите, как это работает (используя
left: 100
):Результат:
источник
Я наследую
UITableViewController
и нуждаюсь в дополнительных настройках двух вставок,willDisplayCell
чтобы также установитьpreservesSuperviewLayoutMargins
значение false. В Swift это выглядит так:источник
preservesSuperviewLayoutMargins = false
потому что значение по умолчанию уже ложноРазделитель
Inset
по умолчанию 15 слева. ИзменитеInset
параметр Разделитель сauto
наcustom
и установите вкладку на0
.источник
Для Swift в iOS 9+
При использовании кастома
UITableViewCell
:тогда для вашего
UITableView
вviewDidLoad
:источник
Для людей, имеющих проблемы с iPad - это приведет вас в такое же состояние, как iPhone. Затем вы можете настроить по
separatorInset
мере необходимости.источник
Используйте его в
cellForRowAtIndexPath
методе, чтобы настроить спецификации разделителя ячеек,он отлично работает для iOS9.0 +
источник
Протестировано для iOS 9.3 и Swift 2.2. Обязательно поместите код, в
willDisplayCell
котором вызывается, непосредственно перед отображением ячейки, а не в том месте,cellForRowAtIndexPath
где вы ее создаете.Добавьте
override
к функции дляUITableViewController
, вот так:источник
Ничто из вышеперечисленного не работает для меня в Swift 2.2 и Xcode 7.3.1
Оказалось, самое простое решение из всех. Код не нужен. Просто измените
TableViewCell
значения полей макета вUITableView
инспекторе:источник
Для Swift 3:
источник
В
viewDidLoad
(тестировал iOS11 - swift 4.1)пытаться
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
источник
Ни одно из этих решений не работает на iPad, но я предложил решение, которое охватывает оба устройства:
С многоразовыми ячейками:
С одноразовыми ячейками:
Просто чтобы расширить этот подход:
Оба свойства могут использоваться
UITableView
&UITableViewCell
. Последний, по сути, является свойствомUIView
, которое является родительским классом обоихUITableView
&UITableViewCell
.источник
swift 5, обновление Xcode 11
поместите это внутри viewDidLoad ()
для разделителя от края до края просто установите значение слева и справа равным 0.
Кстати, измените «yourTableView» на имя вашего выхода tableView.
источник