2016-03-05 15 views
0

У меня есть пользовательский TableViewCell, и я хочу, чтобы его высота соответствовала размеру UIImage. UIImageView в ячейке настроен на соответствие аспекту, и я хочу, чтобы UIImageview был таким же высоким, как и UIImage, который он содержит, и ширину, равную ширине представления таблицы (ширина экрана). В методе heightForRowAtIndexPath: у меня есть изображение, которое содержит ячейка в указанном indexPath.row. Ячейки настроены таким образом, что если я установил heightForRowAtIndexPath, скажем, 500, изображение будет единственным видом, который будет растянут.Установите высоту UITableViewCell на высоту UIImage?

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     let image = comics[indexPath.row].image 

     return image.size.height + 103 
} 

103 являются точками, которые делают остальную часть высоты ячейки (кнопок и меткой) (см sceenshot).

Теперь проблема: все ячейки слишком высоки! и как будто это не было бы довольно странным, некоторые из них слишком коротки? (picture) И я прочитал много подобных сообщений, но ни один из них не ответил на мой вопрос. Как-то изображение image.size.height больше, чем фактическое изображение в изображении? ?? Я просто хочу, чтобы uiimageview был того же размера, что и изображение в нем, в режиме AspectFit.

У вас есть идеи по этому вопросу? Если у вас возникнут дополнительные вопросы, спросите меня! Спасибо! Screenshot

+0

все ячейки имеют изображение? вы уверены в отношении массива изображений и indexPath.row? – UlyssesR

+0

Возможно, вам нужно рассчитать высоту изображения с отношением image.width/screen.width? –

+0

Да, этот массив является массивом источников данных, я использую его для возврата строк в разделе. –

ответ

3

Спасибо большое! Вещь с соотношением сторон сделала это:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     let image = comics[indexPath.row].image 
     let aspectRatioImg = image.size.height/image.size.width 

     return view.bounds.width * aspectRatioImg + 103 
    } 
Смежные вопросы