Я встретил эту проблему после обновления xcode до 6.3. Первая сборка, скомпилированная с использованием xcode 6.2, не имеет этой проблемы и отлично работает.Содержимое пользовательской динамической высоты UITableViewCell в iOS8 имеет разную ширину
Проблема заключается в следующем: после переключения на другую вкладку и обратно или обратно из push segue ширина большинства ячеек немного уменьшится. Но некоторые нет. И это выглядит следующим образом:
Содержание метки во 2-й строке ячейки имеет правильную ширину. И все ячейки отображают содержимое с правильной шириной после первого запуска. На изображении выше, есть два uitableviewcells. просмотр содержимого: синий; фоном виде: светло-зеленый; Содержимое Лейбл: фиолетовый;
Вид bg и contentLabel в 1-й ячейке сжимаются. Этого я не хочу.
Я использую раскадровку для установки ограничений. Ограничения на просмотр bg. Ограничения на ярлык Я также попытался кэшировать высоту ячейки в соответствии с этим вопросом UITableView layout messing up on push segue and return. (iOS 8, Xcode beta 5, Swift), но это не сработает.
//In viewDidLoad
self.tableView.estimatedRowHeight = 100.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.contentInset = UIEdgeInsetsZero;
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
float height = [[self.estimatedRowHeightCache objectForKey:[NSString stringWithFormat:@"%ld", indexPath.row]] floatValue];
if (height) {
return height;
} else {
return UITableViewAutomaticDimension;
}
}
//cache row height. I observed this doesn't been called in first launching in debugging.
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[self.estimatedRowHeightCache setValue:[NSNumber numberWithFloat:cell.frame.size.height] forKey:[NSString stringWithFormat:@"%ld", indexPath.row]];
}
Благодарим за помощь!
может установить цвет фона для contentView клетки? или задать цвет фона ячейки, или вы уже устанавливаете это и проверяете? –
Я установил цвета фона для каждого вида. contentView: синий; background view: светло-зеленый, который представляет собой представление, добавленное в contentView в качестве фона метки. contentLabel: фиолетовый. – AngleZhou
Вы могли бы поделиться своим кодом, где вы установили эти цвета? Кроме того, вы используете xib? –