0

写真が読み込まれていない場合に表示されるラベル付きの UIImage を作成したいと思います。アプリケーションでこの画像を生成すると、テキストのローカライズが非常に簡単になるため、より便利です。私はコードを持っています:

NSString *text = @"Photo not loaded yet. Please wait.";
UIFont *font = [UIFont boldSystemFontOfSize:35];
CGSize imageSize = CGSizeMake(400, 400);

CGSize constraint = CGSizeMake(imageSize.width * 0.8f, imageSize.height * 0.8f);
CGSize textSize = [text sizeWithFont:font constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];

UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);

CGPoint pointToDraw = CGPointMake((imageSize.width - textSize.width) / 2, (imageSize.height - textSize.height) / 2);

[text drawAtPoint:pointToDraw forWidth:textSize.width withFont:font lineBreakMode:NSLineBreakByWordWrapping];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return image;

ただし、スクリーンショットのように、最初の行のみを描画します。

シミュレーターのスクリーンショット

どこが間違っていたのですか?

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

4

1 に答える 1

2

ドキュメントから-drawAtPoint:forWidth:withFont::

指定されたフォントと属性を使用して、現在のグラフィックス コンテキストの指定された位置に文字列を 1 行で描画します。

したがって、別の方法を使用してください。-drawInRect:withFont:lineBreakMode:有力候補のようです。

于 2013-07-08T22:13:28.513 に答える