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.
verwenden Sie automatische Layout? – Joshua
Sie müssen auch den geschätzten Zeilenhöhenparameter angeben. Gib einfach self.tableView.estimatedRowHeight = 100. –