2016-01-17 4 views
0

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

------- 
|  | <--- image 
|  | 
------- 

blah blah blah <--- some other cells 
-------------- 
blah blah blah 
-------------- 
blah blah blah 

И я думал, что это так просто, как это:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    if indexPath.section == irrelevant { 
     let cell = UITableViewCell() 
     let image = UIImageView(image: someImage, highlightedImage: nil) 
     cell.contentView.addSubview(image) 
     return cell 
    } 
    // Code for the other cells, irrelevant 
} 

Но вышло так:

enter image description here

Как вы можете видеть, изображение выходит из камеры! То, что я хочу сделать, - растянуть ячейку, чтобы изображение действительно «внутри» ячейки. Я попытался это:

cell.sizeToFit() 

и это:

cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.width, image.frame.height + 15) 

но оба не работали (результат остается тем же)!

Есть ли способ растянуть его? Если этого не происходит, как я могу отобразить изображение в UITableViewController?

Примечание. Не говорите мне, чтобы установить свойство ячейки imageView. Слишком маленький!

+2

Используйте Tableview метод делегата heightForRowAtIndexPath – shpasta

+0

изменить высоту ячейки в heightForRowAtIndexPath –

+0

В этом примере вы alwais можете поместить все элементы и клетки всегда получить хороший рост и TableView тоже: HTTP: //stackoverflow.com/а/35022751/4693765. Положите перезагрузку при изменении значений полей. –

ответ

1

Используйте этот

override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat { 

if indexPath.section == 0 { 
    return heightForYourImage 
    } 
    else if indexPath.section == 1 { 
    return heightForYour labels 
    } 

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