私は[NSString drawInRect:]
テクスチャにテキストを描画するために使用していますが、ドロップシャドウを追加するまですべてが正常に機能します。それらは正しく表示されますが、描画先の四角形によってクリップされることがよくあります。
問題は[NSString sizeWithFont:]
、ドロップシャドウがを介して適用されるため、ドロップシャドウがわからないことCGContextSetShadowWithColor(...)
です。
これが私が使用しているコードです(綿毛が除去されています):
CGSize dim = [theString sizeWithFont:uifont];
...
CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f);
CGContextTranslateCTM(context, 0.0f, dim.height);
CGContextScaleCTM(context, 1.0f, -1.0f);
CGContextSetShadowWithColor(context, CGSizeMake(dropOffset.x, dropOffset.y), dropBlur, dropColorRef);
...
[theString drawInRect:dim withFont:uifont lineBreakMode:UILineBreakModeWordWrap alignment:align];
dim
ドロップシャドウとブラーを考慮に入れて拡張しようとしましたが、ほとんどの場合は機能しますが、追加された余分なスペースのために、拡張されたrectによってラインが完全に折り返されることがあります。
私が使用しているよりも、描画する(または文字列を描画する)ために必要なテクスチャ/長方形のサイズを見つけるためのより良い方法はありますか?