我有一个很长的 NSString , UIFont 和所需的 width 。我只想在给定的UIFont中获得适合宽度的字符串的第一行。 “获取”是指获取一个子字符串。第二行可能会被截断,并且第一行中必须包含自动换行。
我该如何实现?请告诉我正确的方向。谢谢!
最佳答案
我认为没有简单,干净而优雅的方法可以做到这一点。但是,如果您查看NSString UIKit Additions reference,则有些方法可能有助于获得良好的近似值。
特别要注意:
CGSize aSize =
[ myString sizeWithFont:(UIFont *)aFont
constrainedToSize:(CGSize ) aSize ];
使用所需宽度的aSize和所需高度的2 * fontSize(用于2行)。
取结果宽度(aSize.width)除以您的字体大小。如果该字符串适合于此框,则该位置应近似于您的字符串将被截断的位置。
现在不幸的是,您需要字体比率(点大小与宽度之比),我不知道该如何获得。我已经确定地确定它在4到6之间,但这就像说pi大约是3。
无论如何,字符串被截断的近似索引将是
( fontRatio * aSize.width ) / fontSize;
我编写了一个小型模拟器项目,以测试线宽,字体比率,字体大小等的各种组合,欢迎您使用。在这里:string test project
关于iphone - NSString的前两行,给出了宽度和字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473397/