3

Ich verwende iOS9 XCode7 Ich muss dynamisch die Höhe der Zelle ändern, nach Labeltext HöheiOS: Dynamische Höhe Für UITableViewCell

ich verwendet habe:

self.tableView.rowHeight=UITableViewAutomaticDimension; 

Aber es ist nicht Arbeiten für benutzerdefinierte Zelle. sizetoFit ist in iOS9 entfernt.

Bitte etwas vorschlagen. Dank

+0

verwenden Sie automatische Layout? – Joshua

+1

Sie müssen auch den geschätzten Zeilenhöhenparameter angeben. Gib einfach self.tableView.estimatedRowHeight = 100. –

Antwort

8

Geben Sie Ihre Etiketten Einschränkungen relativ zur Zelle, oben, unten, links und rechts.

Dann wird Ihre Zellengröße mit der Höhe des Inhalts wachsen.

auch Ihr Label mehrzeilige machen (indem Linien-Eigenschaft auf 0 in Attribut-Inspektor)

#pragma mark- Menu table Delegates 

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    return UITableViewAutomaticDimension; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    return UITableViewAutomaticDimension; 
} 
1

Ich bin mir nicht ganz sicher, was dieser Satz bedeutet (a Screenshot geholfen hätte).

„ich brauche die Höhe der Zelle dynamisch zu ändern, nach Labeltext Height“

So haben Sie ein UITableViewCell, die ein UILabel und will jede Zelle in Ihrer Tabelle eine Höhe auf dieser Zelle Label abhängig zu haben?

Hier ist der Code, den ich verwende.

In meiner UITableViewCell Klasse, werde ich eine statische Funktion zu messen, definieren und die Höhe meiner .xib Datei zurück:

@implementation MikesTableViewCell 

... 

+(CGSize)preferredSize 
{ 
    static NSValue *sizeBox = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     // Assumption: The XIB file name matches this UIView subclass name. 
     NSString* nibName = NSStringFromClass(self); 
     UINib *nib = [UINib nibWithNibName:nibName bundle:nil]; 

     // Assumption: The XIB file only contains a single root UIView. 
     UIView *rootView = [[nib instantiateWithOwner:nil options:nil] lastObject]; 

     sizeBox = [NSValue valueWithCGSize:rootView.frame.size]; 
    }); 
    return [sizeBox CGSizeValue]; 
} 

@end 

Dann in meiner UIViewController Klasse, ich werde meine UITableView sagen, Benutze diese Zelle, finde heraus, wie groß sie ist.

@property (nonatomic) float rowHeight; 

UINib *cellNib = [UINib nibWithNibName:@"MikesTableViewCell" bundle:nil]; 
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"CustomerCell"]; 

rowHeight = [MikesTableViewCell preferredSize].height; 

... 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return (float)rowHeight; 
} 

Wieder ist dies nicht genau das, was Sie suchen, aber ich hoffe, das hilft.

1

versuchen Sie dies. ist es so einfach.

Satz dieser Höhe in heightForRowAtIndexPath Methode

float vendorNameHeight = [vendorNameLbl.text heigthWithWidth:width andFont:[UIFont fontWithName:@"Signika-Light" size:21.0]]; 

dann

UILabel*vendorNameLbl=[[UILabel alloc]initWithFrame:CGRectMake(13, 11, 100, 22)]; 
    vendorNameLbl.numberOfLines = 0; 
    [vendorNameLbl sizeToFitVertically]; 
Verwandte Themen