首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在UITextView中获取最后一行的文本长度

如何在UITextView中获取最后一行的文本长度
EN

Stack Overflow用户
提问于 2016-05-08 01:28:45
回答 2查看 999关注 0票数 1

在我的应用程序中,我试图以类似于UILable的WhatsApp的方式对齐UITextView的时间文本,如果UITextView的消息文本的最后一句太长,那么时间就会推到下一行。因此,我实际上正在尝试根据UITextView的消息框调整UILabel的时间。

消息框时间布局图像

代码语言:javascript
运行
复制
This is a text message.  7:16PM


This is a longer
text message.    7:15PM


This is an even longer
text message till end.
                7.15PM

我可以想到的一种方法是使用UITextView的类,获取最后一行的长度,并计算文本宽度与UITextView的宽度相比较,以了解它是否超过了但没有运气。有办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-08 09:09:34

这是我写的解决问题的代码。感谢格雷格给我指明了正确的方向。

代码语言:javascript
运行
复制
+ (BOOL)didTextMoveToNewline:(NSString *)text previousSize:(CGSize)previousSize {
    UIFont *messageBubbleFont = [UIFont systemFontOfSize:14.0f];
    float maximumTextWidth = 188;

    NSString *finalText = [[NSString alloc] init];
    finalText = [NSString stringWithFormat:@"%@ 10:00PM ", text];
    CGRect stringRect = [finalText boundingRectWithSize:CGSizeMake(maximumTextWidth, CGFLOAT_MAX)
                                           options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
                                        attributes:@{ NSFontAttributeName : messageBubbleFont }
                                           context:nil];

    CGSize stringSize = CGRectIntegral(stringRect).size;

    if (stringSize.height > previousSize.height)
        return YES;
    else
        return NO;
}
票数 1
EN

Stack Overflow用户

发布于 2016-05-08 02:12:30

黑客将自动添加一个空白处,时间长度到每条消息的末尾。

代码语言:javascript
运行
复制
let userMessageLabel.text = userMessage + "        "

然后,让时间总是重叠的最后一行。如果空格的数量是正确的,文本和时间将永远不会触及。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37095325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档