2015-02-09 43 views
0

我试图让我的UITableViewCell.textLabel属性垂直和水平自动适应文本。UITableViewCell适合整个框架的textLabel

现在我的tableView不可滚动,因此cell框架不是动态的。我需要textLabel属性来自动换行并调整大小为一组行。将numberOfLines设置为0不起作用,因为它被切断,因为我的cell高度小于textLabel最终高度。使用numberOfLines的任意数字会切断文本。

如何调整我的textLabel以适合cellframe

下面

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

    UITableViewCell* cell = (UITableViewCell*)[tableView @"mycell"]; 

    cell.textLabel.text = @"LOTS OF TEXT"; 

    cell.textLabel.textAlignment = NSTextAlignmentCenter; 
    [cell.textLabel textRectForBounds:cell.bounds limitedToNumberOfLines:0]; 
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    cell.textLabel.numberOfLines = 0; 
    cell.textLabel.adjustsFontSizeToFitWidth = YES; 
    cell.textLabel.minimumScaleFactor = .5; 
} 
+0

你的意思是你想调整基于textLable内容的单元格? – 2015-02-09 13:05:48

+0

@sanginadhammurali不,细胞高度是静态的。我想调整基于静态高度 – DaynaJuliana 2015-02-09 19:17:57

+0

的'textLabel'的大小,尝试在nib文件中给出可文本框架的x和y位置(0,0),并且如果文本行超过两个并且甚至在给出NSLineBreakByWordWrapping之后,则不是然后工作,然后增加可操作的文本。 – 2015-02-10 04:16:40

回答

1

编辑代码:如果所述细胞是一组高度,这是简单的。您将不得不在其中设置自定义单元格和textLabel,因为我不认为您无法以您需要的方式修改基本或其他预设单元格中的textLabel。只需添加一个文本标签并将其链接到四边的约束设置为最小量(可以为零)。如果有额外的空间,标签会自动垂直居中放置文本,因此使标签太高不应成为问题。

原来的答复:


如果你不使用的tableView自调整大小的细胞,也许支持的iOS 7,那么它不会不管你在小区做什么,因为这个问题是在tableView行高。如果一个标签经典的boundingRect方法将起作用。在tableView:heightForRowAtIndexpath:

NSString *stringFromDataSource = @"Text For Label"; 
    CGSize potentialSize = CGSizeMake(CGRectGetWidth(self.tableview.frame), CGFLOAT_MAX); 
    NSStringDrawingOptions optionsForMultiline = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading; 
    NSDictionary *attributes = @{ 
          NSFontAttributeName : [UIFont preferredFontForTextStyle:UIFontTextStyleBody] 
          }; //or whatever 
    CGRect rectForText = [stringFromDataSource boundingRectWithSize:potentialSize 
            options:optionsForMultiline 
            attributes:attributes 
            context:nil]; 
    return CGRectGetHeight(rectForText); 

注意,在你的问题,你的上浆细胞的各种选项都不会,如果为textLabel与自动布局扩展到使用,除非有约束封盖的最大尺寸,在这点minimumScaleFactor等等。

+0

我希望我的单元格是静态高度,所以不会出现上述问题? – DaynaJuliana 2015-02-10 00:30:06

+0

这仍然不起作用。使用包含边距的自动布局的UILabel创建自定义原型单元仍会切断标签文本 – DaynaJuliana 2015-02-10 05:17:33