0

次のコードを使用して、カスタム ビューにテキストを描画しています。

- (void)drawProgramDescription:(CGContextRef) context {
    UIGraphicsPushContext(context);
    // get string from dataSource
    NSString *programDescription = [self.dataSource giveDescriptionOfProgram:self];
    // convert string to a C string
    const char *programDescriptionCString = [programDescription 
                                             cStringUsingEncoding:kCGEncodingMacRoman];
    CGContextSelectFont(context, "Helvetica", 1, kCGEncodingMacRoman);
    // draw it
    CGContextShowTextAtPoint(context, 20, 20, programDescriptionCString, 
                                              sizeof(programDescriptionCString) + 1);
    UIGraphicsPopContext();
}

このメソッドはdrawRect、カスタム ビューにテキストが表示されるように、メソッドで呼び出されます。

ただし、問題は、既に別の反復にある場合でも、に入れられる文字列のサイズCGContextShowTextAtPointが固定されているように見えることです。drawRect

たとえば、最初に表示されるテキストが次の場合:

X*X

そして、2回目に drawRect が呼び出されたときに、テキストを描画する必要があります

sin(X)

テキストが完全に表示されず、代わりにテキストが切り取られます

sin(

drawRect の最初の繰り返しの元のサイズのままです。

これは の機能CGContextShowTextAtPointですか? または、何か不足していますか?

ありがとうございました!

4

2 に答える 2

2

から逃げるほうが幸せかもしれませんCGContextShowTextAtPoint。それはあまりにも制限されています。代わりに、NSString UIKit Additionsに記載されているメソッドを使用してください。

それらは実際の NSString を描画します。それらは現在のコンテキストに引き込まれます。また、文字列、エンコーディング、フォント、外接する四角形などについて、より多くのことを知っています。

iOS 6 では、並列の NSAttributedString メソッドさえあります。

于 2013-05-16T18:04:39.847 に答える