2015-01-28 2 views
0

В настоящее время я могу успешно изменить размер моего UITextView в соответствии с количеством текста внутри него.Как изменить размер UITableViewCell в соответствии с размером подтипа UITextView?

Моя проблема заключается в том, что этот UITextView находится в UITableViewCell. То, что я пытался сделать, это использовать высоту измененного размера UITextView, чтобы изменить размер ячейки, обратившись к ее кадру и установив высоту этого.

Это мой код:

  //dynamically resize textview and cell based on content 
       self.aboutMeTextView.text = profile["aboutMe"] as String 
       self.aboutMeTextView.sizeToFit() 
       self.aboutMeTextView.layoutIfNeeded() 
       var frame = self.aboutMeTextView.frame as CGRect 
       frame.size.height = self.aboutMeTextView.contentSize.height 
       self.aboutMeTextView.frame = frame 

       var cellFrame = self.aboutMeCell.frame as CGRect 
       cellFrame.size.height = self.aboutMeTextView.contentSize.height * 2 

       self.aboutMeCell.frame = cellFrame 

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

Я посмотрел на подобные вопросы, но они мне не помогли.

Поблагодарили бы за помощь.

Спасибо за ваше время

+0

ЗАКАНЧИВАТЬ [heightForRowAtIndexPath] (https://developer.apple.com/library/prerelease/ ИОС/документация/UIKit/Справка/UITableViewDelegate_Protocol/index.html). –

ответ

1

Вы можете использовать UITableView -метод heightForRowAtIndexPath

API Documentation

Он возвращает высоту строки. Таким образом, вы можете использовать метку из текущей ячейки и установить высоту ячейки на высоту этикетки:

override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat { 
    var cellID = "Cell" 
    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellID) as UITableViewCell 

    var yourLabelHeight = cell.yourLabel.size.height 
    return yourLabelHeight 
} 
+0

Я бы сказал, что это статическая ячейка. Я попытался использовать возвращаемый indexPath для установки определенных высот строк, но затем я просто получаю кучу ошибок ограничений. – LondonGuy

+0

Это все еще работает? Я думаю, что я не могу создать ячейку в heightForRow в моем tableView. Я использую tableView, а не контроллер tableView. –