Я наткнулся на странное поведение, когда ячейки, добавленные к UITableView
, иногда отступали слева. Это происходит только в iOS 8.3, и я не могу найти четкую картину того, когда это произойдет.
Кто-нибудь испытывает то же самое?
Я наткнулся на странное поведение, когда ячейки, добавленные к UITableView
, иногда отступали слева. Это происходит только в iOS 8.3, и я не могу найти четкую картину того, когда это произойдет.
Кто-нибудь испытывает то же самое?
Ну, это странно...
Кажется, что иногда UITableViewCellContentView
contentView
не выравнивается с самим UITableViewCellContentView
. Это происходит, когда UITableView
сам по себе является частью макета шире экрана (как в случае горизонтального пейджера).
К счастью, решение прост: добавьте ограничение для выравнивания contentView
со своим родителем. Это можно сделать только программно, так как вы не можете редактировать ограничения contentView
в редакторе макетов.
- (void)awakeFromNib {
// Initialization code
// iOS 8.3 bug, where contentView x position isnt aligned with self x position...
// So we add a constraint to do the obvious...
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
}
Это только началось в iOS 8.3, но исправление кажется безопасным и обратно совместимым с более ранними версиями.
Как всегда - прокомментируйте свой опыт.
Мой tableViewCells видел увеличенные поля слева и справа при запуске на iOS 8.3, которые я не видел в предыдущих версиях.
Установка:
self.contentView.preservesSuperviewLayoutMargins = NO;
исправил мою проблему и сохранил мои поля на всех версиях, но помните, что это доступно только на iOS 8 +.
Итак, вот, например, вы можете сделать это:
- (void)awakeFromNib {
if ([self.contentView respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
self.contentView.preservesSuperviewLayoutMargins = NO;
}
}
Похоже, это из-за свойства layoutMargins. Я отключил мое ограничение во втором элементе "Относительно поля", и все отлично поработало. Вот статья .
Я видел вариацию этой проблемы с приложением, над которым я работаю. Мы видим некоторые ячейки таблицы с неправильным выравниванием вершин/трейлингов.
Он не подключен к iOS 8.3, он возникает только при создании с Xcode 6.3. Я могу взять тот же проект и построить его на Xcode 6.2, и этого не происходит.
После некоторого исследования выясняется, что это происходит только на ячейках таблицы в xibs.
Обходной путь заключается в том, чтобы удалить ограничение на начало/конец на поля и установить их непосредственно в супервизор (т.е. представление содержимого ячейки).
Это исправлено для меня. Я просто прекратил использовать UITableViewCell
imageView
и textLabel
свойства, подключенные к моим выходам.