Dynamische Höhe der Zelle mit UILabel in tableview ios

Arbeite ich an einem chat-Anwendung, die zeigt die Nachricht und das Bild des Benutzers. Ich habe eine Tabelle anzeigen und eine benutzerdefinierte Zelle.Die Zelle hat ein UIlabel und UIImage. Ich habe versucht, verschiedene Methoden, um die Größe der Zelle Höhe dynamisch basierend auf dem content-text-label .Ich habe den numberofLines=0 in das storyboard selbst und legen Sie die Höhe der Zelle konstant, so dass mehrere Linien können in passen. Aber es zeigt nicht mehrere Zeilen und für die Höhe, ich benutzte auto dimension, aber es hat nicht funktioniert als gut . Ich benutzte auch die folgenden link
Und ich bin mit einem benutzerdefinierten Zelle vom Typ messageTableViewCell, die hat eine Eigenschaft mit der Etikett drin.

Hier ist der Schnappschuss :-Dynamische Höhe der Zelle mit UILabel in tableview ios

Mein code in der viewcontroller.m

- (void)viewDidLoad
{

   self.tableView.estimatedRowHeight = 100.0;

   self.tableView.rowHeight = UITableViewAutomaticDimension;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

     messageTableViewCell *cell = [self.messageTableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell == nil) 
    {
         cell = [[messageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    cell.messageLabel.text = [_messages objectAtIndex:indexPath.row];
    cell.messageLabel.lineBreakMode = NSLineBreakByWordWrapping;
    cell.messageLabel.numberOfLines=0;
    [cell.messageLabel sizeToFit];
    return cell;
}

BEARBEITEN

Statt Etikett, das ich eingefügt eine textview in der Zelle und veränderte es zu :

- (void)textViewDidChange:(UITextView *)textView
{
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth,     MAXFLOAT)];
    CGRect newFrame = textView.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth),   newSize.height);
    textView.frame = newFrame;
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath
{
    static messageTableViewCell *sizingCell = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sizingCell = [self.messageTableView  dequeueReusableCellWithIdentifier:@"cell"];
   });

    sizingCell.textMessage.text=_messages[indexPath.row];
    CGFloat fixedWidth = sizingCell.textMessage.frame.size.width;
    CGSize newSize = [sizingCell.textMessage     sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
    CGRect newFrame = sizingCell.textMessage.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
    CGFloat height= newFrame.size.height;
    NSLog(@"%f is height ",height);
    return height+5.0f;
}

Aber es ist auch nicht die Arbeit und schneiden Sie die Obere Hälfte des Textes.

Versuchen Sie, diese hervorragende Erklärung: stackoverflow.com/questions/18746929/...

InformationsquelleAutor user2714823 | 2015-02-02

Schreibe einen Kommentar