任何人都可以推荐一种确定 iPhone 上某些包装文本的 Rect 的好方法吗?我已经尝试了 2.1 SDK 中 NSString 的所有内置方法,但均无济于事。size 方法永远不会返回允许我在自定义视图中完全适应包装文本的大小。
我正在绘制一些用户可自定义的文本,这些文本应始终在我的自定义视图范围内尽可能大。如果我可以确定为给定的最大宽度和字体大小完全包围包装文本所需的矩形,我可以提高或降低字体大小,直到文本大到足以完全填充自定义视图而不会被剪裁。
任何帮助深表感谢!
NSString 的 sizeWithFont:constrainedToSize: 方法可能有用:
CGSize sizeForText = [theText sizeWithFont:theFont constrainedToSize:CGSizeMake(myMaxWidth, 9999)];
你说你已经尝试了所有的尺寸方法,但根据你的描述,这听起来像你正在寻找的东西。
既然你知道你的视图大小,调用 NSString 的 sizeWithFont:forWidth:lineBreakMode:,从你的最小字体大小、视图宽度和 UILineBreakModeWordWrap 开始。然后增加字体大小,直到返回的大小与您的视图一样高。
如果要设置最大字体大小,也可以将其实现为二进制搜索,而不是增加字体大小。
我发现每当您设置 UITextView 的 text 属性时,它都会更新其 contentSize 属性。这使得调整文本视图框架的大小以在滚动视图等中显示变得非常容易。