iphone - NSString的前两行,给出了宽度和字体

标签 iphone objective-c ios ipad nsstring

我有一个很长的 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/

相关文章:

ios - 尝试在我的应用程序中使用 TPKeyboardAvoding Scroll

ios - 按键排序基于 NSDictionary 的 UITableView

ios - 滚动 UIScrollView - 阻塞主线程

objective-c - 如何从特定文件夹中读取图像?

iOS UITableViewCell 自动调整大小错误

iPhone - 最终确定 Apple 的模糊 "VerificationController.m"

ios - instagram 关注 api 错误

ios - 解析框架:PFFacebook登录期间出了什么问题?即用户取消了吗?

ios - SpriteKit 中的过渡不工作

ios - 如何为 View Controller 中的单个按钮创建两个 segue?