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 に答える