我正在使用[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
以考虑阴影和模糊,这主要是可行的,但有时扩展的矩形会导致线条被完全不同的包裹,因为添加了额外的空间。
有没有比我使用的更好的方法来找到绘制(或绘制字符串)所需的纹理/矩形的大小?