2017-10-14 11 views
2

J'ai programmé un tableau dans un tableView. Lorsque la cellule utilise plusieurs lignes pour detailTextLabel, l'espace entre les lignes est petit. Je voudrais savoir s'il y a moyen d'augmenter cette hauteur par programme? Voici un exemple de code que j'utilise pour le tableau.Comment modifier la hauteur detailTextLabel par programmation

cell.textLabel?.text = self.filtered[indexPath.row].coptic 
cell.detailTextLabel?.text = self.filtered[indexPath.row].english 
cell.textLabel?.font = UIFont(name:"CS Avva Shenouda", size:30) 
cell.detailTextLabel?.font = UIFont(name: "Constantia", size:25) 
cell.textLabel?.numberOfLines = 0 
cell.detailTextLabel?.numberOfLines = 0 
cell.detailTextLabel?.textColor = UIColor.darkGray 

return cell 
+0

très belle suggestion, utilisez cellule de table personnalisée et le concevoir selon vos besoins – Krunal

+0

Convenu, les cellules personnalisées vous donnent tout le contrôle dont vous avez besoin. – Rob

Répondre

2

Je ne fais que mettre ma logique, pas tout le code. Vous pouvez obtenir la hauteur de la chaîne par le code ci-dessous

func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat { 
     let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude) 
     let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil) 

     return ceil(boundingBox.height) 
    } 

Changer cellForRowAtIndexPath Méthode

cell.detailTextLabel?.numberOfLines = 0 
let height = height(withConstrainedWidth:200, font:YourFont) // change width and font as per your requirement 
cell.detailTextLabel?.frame = CGRect(x: cell.detailTextLabel?.frame.origin.x, y: cell.detailTextLabel?.frame.origin.y, width: cell.detailTextLabel?.frame.size.width, height: height) 

Vous pouvez gérer la hauteur des cellules selon detailTextLabel hauteur

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
    return 50 // You should put your code or logic that dynamic height based on heigh of label. 
} 
2

La vue de la table doit avoir un estimatedRowHeight et la hauteur tableView comme UITableViewAutomaticDimension.