2016-10-19 2 views
0

Я создаю пользовательскую ячейку UITableView, так как высота также изменяется на ячейку.UITableView Custom Cell Overlapping в ios10 с Swift3

Это мой код для инициализации ячейки, и после этого я хочу добавить UITextView в качестве Subview.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
    let dictAd = self.arrAllQuestions[indexPath.row] as! NSDictionary 

    let fontNew = UIFont(name: "AvenirNext-Regular", size: 19.0) 
    let strA = "\(indexPath.row+1). \(dictAd.object(forKey: "Title")!)" 

    let heightTitle = self.heightForView(text: strA, font: fontNew!, width: tableView.frame.size.width-16) 

    return heightTitle+5; 
} 


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let dictAd = self.arrAllQuestions[indexPath.row] as! NSDictionary 

    let cell = tableView.dequeueReusableCell(withIdentifier: "quesionCell", for: indexPath) as! QuestionCell 

    let fontNew = UIFont(name: "AvenirNext-Regular", size: 19.0) 

    let strA = "\(indexPath.row+1). \(dictAd.object(forKey: "Title")!)" 

    cell.lblName.font = fontNew 
    cell.lblName.text = strA 
    cell.lblName.numberOfLines = 0 
    let heightTitle = self.heightForView(text: strA, font: fontNew!, width: tableView.frame.size.width-16) 

    var frame = cell.lblName.frame as CGRect 
    frame.size.height = heightTitle; //you need to adjust this value 
    cell.lblName.frame = frame; 


    let txtView = AnimatableTextView(frame: CGRect(x: 8, y: cell.lblName.frame.origin.y+cell.lblName.frame.size.height+5, width: tableView.frame.size.width-16, height: 25)) 
    txtView.borderWidth = 1.0 
    txtView.borderColor = UIColor.lightGray 
    txtView.cornerRadius = 4.0 
    cell.contentView.addSubview(txtView) 

    return cell 
} 

Вы можете увидеть результаты ниже.

enter image description here

+0

Лучше улучшить свой вопрос о том, что это правильный результат и то, что код для 'quesionCell'. Я предполагаю, что вы не установили правильную высоту для каждой ячейки в методе делегата. –

+0

Вы внедряете 'heightForRowAt'? – Adeel

+0

добавьте ярлык и текстовое изображение из раскадровки и примените ограничения через раскадровку. – Neha

ответ

3

кажется, что расчет высоты в вашем heightForRowAtIndexPath не является правильным. Подумайте о том, как использовать саморазмерные ячейки с помощью UITableViewAutomaticDimension и Autolayout для решения ваших проблем. Here - отличный учебник, который поможет вам начать работу. Еще одно предположение, если вы используете UITextView или подкласс того же самого в ячейке, и хотите, чтобы высота этого содержимого устанавливала его прокручиваемое свойство в значение false.

+0

UITableViewAutomaticDimension - лучший ответ, если вы используете автомат. – negaipro

+0

Я не использую автомат ... –

+0

Тогда, как я уже сказал, проверьте свои вычисления высоты в heightForRowAtIndexPath. –

1

Объявите это в viewDidLoad Надеюсь, что это поможет вам

tableView.estimatedRowHeight = 44 
Смежные вопросы