一个“快速”:如何获取NSString的大小(宽度)?

我正在尝试查看字符串的字符串宽度是否大于给定的屏幕宽度,在这种情况下,我必须“裁剪”并附加“...”,从而得到通常的行为UILabel。 string.length不会解决问题,因为AAAAAAAA和iiiiii具有相同的长度但大小不同(例如)。

我有点卡住。

非常感谢。

最佳答案

这是另一种方法。找出文本的最小大小,以使它不会换行超过一行。如果换行超过一行,则可以使用高度进行查找。

您可以使用以下代码:

CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
                           constrainedToSize:maximumSize
                               lineBreakMode:self.myLabel.lineBreakMode];

300是屏幕的宽度,边缘留有少量空间。如果不使用IB,则应将自己的值替换为字体和大小,以及lineBreakMode

现在myStringSize将包含一个height,您可以根据自己知道的东西的高度检查它的高度,该高度只有1行(使用相同的字体和大小)。如果更大,则需要剪切文本。请注意,应在字符串上添加一个...,然后再进行检查(添加...可能会再次将其推超出限制)。

将此代码放在循环中以剪切文本,然后再次检查正确的高度。

10-07 19:51
查看更多