1

我使用以下方法在我的自定义单元格中绘制文本,它工作正常,但我发现部分文本丢失(未显示单元格中的所有文本):

- (void)drawContentView:(CGRect)rect {

    UIColor * textColor = [UIColor blackColor];
    if (self.selected || self.highlighted){
        textColor = [UIColor whiteColor];
    }
    else
    {
        [[UIColor whiteColor] set];
        UIRectFill(self.bounds);
    }

    [textColor set];

    UIFont * textFont = [UIFont systemFontOfSize:16];

    CGSize textSize = [text sizeWithFont:textFont constrainedToSize:rect.size];



    [text drawInRect:CGRectMake(self.frame.size.width-(textSize.width+2  ) ,
                                (rect.size.height / 2) - (textSize.height / 2),
                                textSize.width, textSize.height) withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentRight];


}

谢谢,请指教。

4

4 回答 4

1

尽量让绘图的空间大于textSize.width, textSize.heigh

UIFont * textFont = [UIFont systemFontOfSize:16];

CGSize sizeMe = CGSizeMake(300, rect.size.height*1.5);
CGSize textSize = [text sizeWithFont:textFont constrainedToSize:sizeMe];
[text drawInRect:CGRectMake(self.frame.size.width-(textSize.width+10 ) ,
(rect.size.height / 2) - (textSize.height / 2),
textSize.width, textSize.height+(textSize.height*1.5)) withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentRight];
于 2013-05-14T07:44:17.250 回答
0

也许您应该将确定文本大小的行更改为:

CGSize textSize = [text sizeWithFont:textFont constrainedToSize:rect.size lineBreakMode: NSLineBreakByWordWrapping];
于 2013-05-14T07:29:49.980 回答
0

您没有考虑 sizeWithFont 中的 lineBreakMode。您可能希望使用它– sizeWithFont:constrainedToSize:lineBreakMode:来确定实际大小。

顺便说一句,当您的约束恰好是 rect.size 时,返回值永远不会大于实际的 rect.size。这可能是你想要的。每当我在自定义单元格中处理可变长度的字符串时,我想知道字符串是否适合并可能会扩大单个单元格(这当然需要更多的工作)。如果你这样做,那么将size.height约束大小设置为非常高的值。10000.0f或者。

于 2013-05-14T07:30:57.280 回答
0

您正在创建一个自定义单元格。将文本绘制到其中需要什么?这就是 Label 的目的,只需添加为子视图并使用它。

drawInRect 是 coregraphics 的绘制方法

根据文档

使用指定的边界矩形和字体在当前图形上下文中绘制字符串。此方法使用给定的字体和约束尽可能多地绘制字符串。此方法使用 UILineBreakModeWordWrap 换行模式和 UITextAlignmentLeft 对齐方式。

我没有看到您在绘制之前获得上下文。因此它没有有效的上下文。因此没有绘制

于 2013-05-14T07:34:17.950 回答