2 votes

Hauteur dynamique pour une cellule UITableViewCell avec un UILabel dynamique

J'ai un UITableViewController qui affiche une UITableViewCell personnalisée (héritée de UITableViewCell). Cette même UITableViewCell possède un UILabel qui peut contenir un texte de longueur variable. Le problème que je rencontre est de savoir comment accéder à cet UILabel dans mon UITableViewController afin de pouvoir définir la hauteur correcte de la cellule dans heightForRowAtIndexPath.

Par ailleurs, comment puis-je résoudre mon problème d'étiquette de taille dynamique ?

merci

Voici mon code pour la cellule personnalisée UITableViewCell :

l'en-tête :

#import <UIKit/UIKit.h>

@interface MessagesCustomViewCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *message;   <---- need to access this 

@end

la mise en œuvre :

#import "MessagesCustomViewCell.h"

@implementation MessagesCustomViewCell
@synthesize message=_message;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

3voto

Muncken Points 2682

En utilisant la méthode de mesure de la taille de la police mentionnée par Ivan, vous pouvez également ajouter une classe metod à MessagesCustomViewCell,

+ (CGFloat)heightForMessage:(NSString *)message;

dans laquelle vous calculez la hauteur du message en utilisant la largeur/hauteur, la police, etc. de l'étiquette UIL appropriée. Cette fonction pourrait être appelée à partir de heightForRowAtIndexPath : comme suit :

NSString *dynamicString = [self.mydata objectAtIndex:indexPath.row];
CGFloat height = [MessagesCustomViewCell heightForMessage:dynamicString];
return height;

1voto

Ivan Surzhenko Points 149

Appeler [tableView reloadData] une fois les données mises à jour.

Vérifier la taille avec la méthode [yourString sizeWithFont :(UIFont*) forWidth(CGFloat) lineBreakMode :(NSLineBreakMode)] dans heightForRowAtIndex. La méthode mentionnée renverra une taille requise (y compris la hauteur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X