【问题标题】:Best way to determine word wrap of a NSString in a UILabel在 UILabel 中确定 NSString 自动换行的最佳方法
【发布时间】:2009-04-16 07:04:25
【问题描述】:

我有这样一行:

-Image-这只是一个测试 -图片-但我想知道如何 将两条线分开。什么 在这里做什么?

我认为在 iPhone 上实现的最佳方式是:

UIImageViewUILabel1 UILabel1 UILabel2

如果有更简单的方法来处理 UI 元素 - 我全都听好了。否则,我试图找出文本在 UILabel1 中的结束位置,而无需使用 sizeWithFont 进行反复试验。

更复杂的方法是使用 sizeWithFont 以该字体大小查找每个字符的大小,然后将它们全部加在一起(找出 UILabel1 的第 1 行以及 Line2 上的换行位置)。这感觉像是解决一个简单问题的艰难方法。有谁知道简单的方法吗?

【问题讨论】:

  • 你的意思是你真的希望文本围绕图像流动(即,从图像右侧的第 1 行开始,继续到图像右侧的第 2 行,然后到第 3 行,向左对齐图片下方)?

标签: iphone nsstring word-wrap


【解决方案1】:

也许这不是您要寻找的答案,但这种布局使用 WebView 更容易完成。

从效率的角度来看,UILabel 文本渲染无论如何都是通过 WebViews 实现的。

This article by Craig Hockenberry 建议尝试

使用指标和换行符 [匹配] UILabel 中使用的那些 实施 [...] 远非完美

并且还确认UILabels 在后台使用 WebViews(在文本密集型应用程序的 Shark 转储中也很容易看到)。

【讨论】:

  • 我同意它在 UIWebView 中更容易。我不认为 UILabels 使用 WebView(你知道 WebView 有多贵吗?)。他们使用 drawTextInRect 来绘制字符串。 (我希望这是答案——它超级简单)。我没有在 Craig 的文章中看到参考资料(如果你有其他证据 - 很乐意 c
  • 克雷格的文章中引用的是“UILabel的底层WebView”,看看吧。正如我所说,如果您分析使用大量文本的应用程序,则很容易发现 webcore 代码。 WebKit 是重量级的,我惊讶地发现他们也将它用于 UILabel。
【解决方案2】:

NSString s = @"第一行\n第二行\n最后一行";

【讨论】:

    猜你喜欢
    • 2015-05-06
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多