2016-12-12 5 views
0

Я создаю экран подробного просмотра в приложении. Детальное содержание, которое может быть отображено, может иметь или не иметь изображения. Я использую оценочную высоту строки при отображении своих ячеек.Каков наилучший способ условно отобразить изображение, созданное с помощью раскадровки?

XIB имеет следующие ограничения:

  • Продольных Космические SuperView
  • Ведущее пространства для SuperView
  • нижнего пространства для SuperView
  • верхнего пространства для SuperView
  • Высота < = 200

Это отлично работает, когда у меня есть изображение, но если нет изображения, которое ядро ​​отображает с высотой около 40, и я получаю предупреждение.

предупреждение только один раз: Обнаружен случай, когда ограничения двусмысленно предложить высоту нуля для просмотра содержимого Tableview клетки. Мы имеем с учетом непреднамеренного разрушения и использования стандартной высоты .

Каков наилучший способ решить эту проблему? Я действительно не хочу пытаться условно изменить количество строк, основанных на атрибуте изображения.

В идеале я хотел бы ограничения, которые таким образом, чтобы использовать вышеуказанные ограничения, отображаемое изображение от края до края, отсечение хорошо, с максимальной высотой 200. Или, если нет изображения высота 0.

Код в - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

EntityContentObject *object = (EntityContentObject *)self.resultsArray[0]; 
self.imageURLString = object.entityPicture; 

NSLog(@"IMAGE URL STRING: %@", self.imageURLString); 

ImageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ideaImgCell"]; 

if (!cell) 
{ 
    [tableView registerNib:[UINib nibWithNibName:@"ImageTableViewCell" bundle:nil] forCellReuseIdentifier:@"ideaImgCell"]; 
    cell = [tableView dequeueReusableCellWithIdentifier:@"ideaImgCell"]; 
} 

if([self.imageURLString isEqualToString:@""]){ 
    // no image to display; 
}else{ 
    [cell.ideaImage setImageWithURL:[NSURL URLWithString:self.imageURLString] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
} 

NSLog(@"CELL IDEA IMAGE HEIGHT: %@", NSStringFromCGRect(cell.ideaImage.frame)); 
return cell; 
+0

Должна ли высота 0? Дешевым ярлыком было бы использовать 1, установив высоту> = 1. – Ben

ответ

0

Я думаю, вы должны увидеть это https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

написать эти строки в проекте

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
     if(no image){ // put condition 
      return 0; 
     } 
     else{ 
     return 200; 
     } 
    } 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
     { 
    if(no image){ 
    return 0; 
    } 
    else{ 
    return UITableViewAutomaticDimension; 
    } 

}