【问题标题】:Finding the correct width of a NSString找到正确的 NSString 宽度
【发布时间】:2011-04-29 23:23:38
【问题描述】:

文本视图内的文本换行取决于哪些因素。我的 textview 的宽度是 160 px,我使用下面提到的代码计算了传入文本的宽度,结果是 157 px,但是这个文本被包裹在 3 行中......为什么会这样?

CGSize size = [myText sizeWithFont:textViewFont 
            constrainedToSize:textView.frame.size 
            lineBreakMode:UILineBreakModeWordWrap];

CGFloat textWidth = size.width;

我想将文本的宽度除以文本视图的宽度来获得行数。但是计算返回我 1 而我可以在模拟器的 textview 中看到 3 行。

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios nsstring


    【解决方案1】:
    - (CGSize)sizeWithFont:(UIFont *)font
         constrainedToSize:(CGSize)size
             lineBreakMode:(UILineBreakMode)lineBreakMode
    

    计算一个字符串的大小,如果它被作为参数给定的大小约束绘制,如果字符串对于给定的大小约束来说太长,它将被截断以适应。

    如果要在没有约束的单行上绘制字符串的宽度,请使用:

    - (CGSize)sizeWithFont:(UIFont *)font
    

    见:http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html

    注意:从 iOS7 开始

    - (CGSize)sizeWithFont:(UIFont *)font
    

    已弃用,改为使用:

    - (CGSize)sizeWithAttributes:(NSDictionary *)attrs
    

    【讨论】:

    • 问题是尚未在屏幕上绘制字符串。我从服务器获取这些数据,对于某些功能,必须计算在给定大小的文本区域中可以容纳多少行。有什么解决办法吗?
    • 我自己没有检查过,但 Jano 对这个问题的回答 stackoverflow.com/questions/5837348/… 似乎是合理的
    【解决方案2】:

    尝试将您传递给该方法的大小的height 设置为很大。否则返回的大小将始终显示文本视图的实际高度(假设完整的字符串不适合给定的高度)。

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2013-05-23
      相关资源
      最近更新 更多