Ответ 1
Переопределите метод layoutMargins в своем пользовательском классе ячеек.
- (UIEdgeInsets)layoutMargins
{
return UIEdgeInsetsMake(0, 15, 0, 0);
}
Что-то происходит с нашими разделителями ячеек таблицы на iPhone 6 Plus. Я создал пустой тестовый проект с пользовательской ячейкой, содержащей только одну метку, и ограничение 15pt на передний край.
iPhone 5S
Метка и разделитель 30 px (15pt) от передней кромки. Все хорошо.
iPhone 6 Plus
Метка составляет 48 px (15pt) от передней кромки, а разделитель - 60px (20pt) от передней кромки.
Если я запишу таблицу table.separatorInset, то 15pt на iPhone 5S и 20pt на 6 Plus. Установка вставки в 15 на 6 Plus вручную не работает.
Отправьте справку.
Переопределите метод layoutMargins в своем пользовательском классе ячеек.
- (UIEdgeInsets)layoutMargins
{
return UIEdgeInsetsMake(0, 15, 0, 0);
}
Если вы используете раскадровку, выберите инспектор атрибутов Table View. Измените
Вставка разделителя
to
Пользовательский
и оставить левое поле по умолчанию как 15
.
Не идеальное решение, но это сработало для меня.
@IBOutlet weak var leftViewLeadingConstraint: NSLayoutConstraint!
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
switch UIScreen.mainScreen().scale {
case 2:
leftViewLeadingConstraint.constant = 7.0
case 3:
leftViewLeadingConstraint.constant = 11.0
default:
assertionFailure("Error: wrong scale value")
}
}
I фиксировано этим решением: http://qiita.com/mono0926/items/42f7a344b39e946abfe2
Получить tableView.separatorInset.left
значение при вызове viewDidLayoutSubviews
.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
notificationLabelLeft.constant = tableView.separatorInset.left
}
Просто сделайте эту опцию таблицы ложной, и она будет работать одинаково на всех устройствах, особенно на iPad.
cellLayoutMarginsFollowReadableWidth = false