Είμαι χρησιμοποιώντας ένα έθιμο UITableViewCell που έχει κάποιες ετικέτες, κουμπιά και απόψεις εικόνα που θα εμφανίζεται. Υπάρχει μία ετικέτα στο κύτταρο του οποίου το κείμενο είναι ένα NSStringαντικείμενο και το μήκος της συμβολοσειράς θα μπορούσε να είναι μεταβλητή. Λόγω αυτού, δεν μπορώ να ορίσετε ένα σταθερό ύψος στο κελί του UITableView«s heightForCellAtIndexμέθοδο. Το ύψος του κυττάρου εξαρτάται από το ύψος της ετικέτας η οποία μπορεί να προσδιοριστεί με τη χρήση της NSString«s sizeWithFontμέθοδο. Προσπάθησα τη χρήση του, αλλά φαίνεται πως θα πάω λάθος κάπου. Πώς μπορεί να καθοριστεί;
Εδώ είναι ο κώδικας που χρησιμοποιείται για την προετοιμασία του κυττάρου.
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier])
{
self.selectionStyle = UITableViewCellSelectionStyleNone;
UIImage *image = [UIImage imageNamed:@dot.png];
imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(45.0,10.0,10,10);
headingTxt = [[UILabel alloc] initWithFrame: CGRectMake(60.0,0.0,150.0,post_hdg_ht)];
[headingTxt setContentMode: UIViewContentModeCenter];
headingTxt.text = postData.user_f_name;
headingTxt.font = [UIFont boldSystemFontOfSize:13];
headingTxt.textAlignment = UITextAlignmentLeft;
headingTxt.textColor = [UIColor blackColor];
dateTxt = [[UILabel alloc] initWithFrame:CGRectMake(55.0,23.0,150.0,post_date_ht)];
dateTxt.text = postData.created_dtm;
dateTxt.font = [UIFont italicSystemFontOfSize:11];
dateTxt.textAlignment = UITextAlignmentLeft;
dateTxt.textColor = [UIColor grayColor];
NSString * text1 = postData.post_body;
NSLog(@text length = %d,[text1 length]);
CGRect bounds = [UIScreen mainScreen].bounds;
CGFloat tableViewWidth;
CGFloat width = 0;
tableViewWidth = bounds.size.width/2;
width = tableViewWidth - 40; //fudge factor
//CGSize textSize = {width, 20000.0f}; //width and height of text area
CGSize textSize = {245.0, 20000.0f}; //width and height of text area
CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:11.0f]
constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
CGFloat ht = MAX(size1.height, 28);
textView = [[UILabel alloc] initWithFrame:CGRectMake(55.0,42.0,245.0,ht)];
textView.text = postData.post_body;
textView.font = [UIFont systemFontOfSize:11];
textView.textAlignment = UITextAlignmentLeft;
textView.textColor = [UIColor blackColor];
textView.lineBreakMode = UILineBreakModeWordWrap;
textView.numberOfLines = 3;
textView.autoresizesSubviews = YES;
[self.contentView addSubview:imageView];
[self.contentView addSubview:textView];
[self.contentView addSubview:webView];
[self.contentView addSubview:dateTxt];
[self.contentView addSubview:headingTxt];
[self.contentView sizeToFit];
[imageView release];
[textView release];
[webView release];
[dateTxt release];
[headingTxt release];
}
Αυτή είναι η ετικέτα της οποίας το ύψος και το πλάτος πηγαίνουν στραβά:
textView = [[UILabel alloc] initWithFrame:CGRectMake(55.0,42.0,245.0,ht)];

















