【发布时间】:2012-05-10 18:57:32
【问题描述】:
我有一个自定义的UIView 类,我想在- (void)drawRect:(CGRect)rect 中绘制一些文本。但是,我希望在系统字体大小为 12 时将文本块的最大宽度限制为 84px。如果文本超过此宽度,我想将其剪切并使最后 3 个字符为“...”。
例子:
"This is some text" // length okay
"Information co..." // length truncated
我知道我可以通过NSString的- (CGSize)sizeWithFont:(UIFont *)font计算给定字体的字符串的宽度,但是我怎样才能得到84px宽度的最大字符串长度呢?
【问题讨论】:
-
问题是 iOS 上没有很多(如果有的话)等宽字体。所以你可能适合假设 10 个“i”字符与 6 个“X”字符的宽度相同
-
This blog 甚至说等宽字体在 iOS 中并不是真正的等宽字体:/ - 所以你真的会更好地使用
sizeWithFont:来处理你想要使用的每个字符串 -
一定有办法的。
UILabel正在这样做。我可以对正确的长度进行某种形式的二进制搜索,循环重试直到长度合适,但这对我来说似乎很难看...... -
是的,我说的是获取特定宽度的最大字符数 - 这只有使用真实(具体)字符串才有可能 - 例如。检查它是否适合。
drawAtPoint: forWidth: withFont: does exactly that。很高兴你解决了你的问题。 :)
标签: iphone objective-c ios ios5 core-graphics