0

我想将我的标签设置为具有固定宽度,UITableViewCell以便我的文本可以超过 2 行,但我将始终在单元格的右侧保留空间以显示另一个视图。

到目前为止,我尝试这样做,但它不起作用。UILabel刚刚穿过整个该死的牢房。我希望它受到限制,以使文本在环绕到第二行之前到达单元格的 3/4 处。

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

    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyle)UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];

        [cell.textLabel setLineBreakMode:NSLineBreakByWordWrapping];
        cell.textLabel.minimumScaleFactor = 0;
        [cell.textLabel setNumberOfLines:0];
        [cell.textLabel setFont:[UIFont boldSystemFontOfSize:FONT_SIZE]];
        [cell.textLabel setBackgroundColor:[UIColor clearColor]];;

        NSString * labelText = myString; // lets just pretend this works. I have somethign else here.

        CGSize constraint = CGSizeMake((CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2) - 100.0f), 20000.0f); // Ultimate cell 
        CGSize size = [labelText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
        [cell.textLabel setText:labelText];
        [cell.textLabel setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2) - 180.0f, MAX(size.height, 36.0f))]; // Lets me get the height of the text, supposedly.
        }

// more stuff....

}
4

2 回答 2

2

您需要继承 UITableViewCell 并设置标签的大小layoutSubviews

尽管在创建单元格时标签的大小正确,但每次在屏幕上绘制单元格时,您的大小都会被 UITableViewCell 方法“覆盖”,因此您看不到任何变化。

于 2013-06-04T10:48:14.510 回答
0

试试这个,你会得到字符串大小的标签高度

CGSize maximumLabelSize = CGSizeMake(width, FLT_MAX);
    CGSize expectedLabelSize = [string sizeWithFont:font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByTruncatingTail];
//you get height from expectedLabelSize.height
于 2013-06-04T11:31:12.780 回答