2014-12-12 4 views
2

Проблема в том, что я могу получить свой пользовательский UITableViewCell (изменен пользовательский backgroundColor), , но ограничения в нем все потеряны.Пользовательский tableViewCell в раскадровке, потеряв ограничения автомакета в iOS8.1

пс. Я использую Xcode 6.1.1.

Я хочу получить правильное значение высоты, но ограничения все потеряны.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

     static HomeMainNewsCell *mainCell = nil; 

     static dispatch_once_t onceToken; 
     dispatch_once(&onceToken, ^{ 
      mainCell = [self.tableView dequeueReusableCellWithIdentifier:@"HomeMainNewsCell"]; 
     }); 
     [mainCell.titleLabel setText:@"dsfjsdhfjsasdfsdfdsfsdfsdfsdfk"]; 
     [mainCell layoutIfNeeded]; 

     CGFloat height = [mainCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 
     return height; 
} 

Это журнал

po [mainCell.contentView constraints] 
<__NSArrayM 0x7fe05b745c10>(

) 

Вот раскадровке Скриншот

enter image description here

Добавление Информация

После того как я удалить heightForRowAtIndexPath Methed, он отображает совершенен в iOS8. 1.

Но в iOS7.1 оно отображается, когда значение каждой ячейки составляет 44. И все ограничения возвращаются.

po [mainCell.contentView constraints] 
<__NSArrayM 0x78e50f20>(
<NSLayoutConstraint:0x78e52a10 UILabel:0x78e524d0.trailing == UITableViewCellContentView:0x78e52230.trailing - 8>, 
<NSLayoutConstraint:0x78e52a40 V:[UILabel:0x78e524d0]-(17)-| (Names: '|':UITableViewCellContentView:0x78e52230)>, 
<NSLayoutConstraint:0x78e52a70 H:|-(8)-[UILabel:0x78e524d0] (Names: '|':UITableViewCellContentView:0x78e52230)>, 
<NSLayoutConstraint:0x78e52aa0 V:[UILabel:0x78e52380]-(9)-[UILabel:0x78e524d0]>, 
<NSLayoutConstraint:0x78e52ad0 UILabel:0x78e52380.trailing == UITableViewCellContentView:0x78e52230.trailing - 8>, 
<NSLayoutConstraint:0x78e52b00 V:[UIImageView:0x78e522d0]-(9)-[UILabel:0x78e52380]>, 
<NSLayoutConstraint:0x78e52b30 H:|-(8)-[UILabel:0x78e52380] (Names: '|':UITableViewCellContentView:0x78e52230)>, 
<NSLayoutConstraint:0x78e52b60 H:|-(0)-[UIImageView:0x78e522d0] (Names: '|':UITableViewCellContentView:0x78e52230)>, 
<NSLayoutConstraint:0x78e52b90 H:[UIImageView:0x78e522d0]-(0)-| (Names: '|':UITableViewCellContentView:0x78e52230)>, 
<NSLayoutConstraint:0x78e52bc0 V:|-(0)-[UIImageView:0x78e522d0] (Names: '|':UITableViewCellContentView:0x78e52230)> 
) 
+0

Как добавляются ограничения? Вы пытались зарегистрировать cell.constrains? –

+0

@Clement Я добавил их в Storyboard.And да, я зарегистрировал это и нашел, что причина, почему значение высоты неверно. –

+0

Вы используете классы размеров? –

ответ

1

И наконец, я нашел идеальное решение.

Причина этого вопроса в iOS8 с использованием tableView.rowHeight = UITableViewAutomaticDimension с автозапуском, и он отлично работает и лучше, чем раньше.

И сообщение для решения отсюда.

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=18517

Решение это так здорово ~~ И спасибо комментарии людей по этому вопросу.

Смежные вопросы