在我的应用程序中,我试图以类似于UILable的WhatsApp的方式对齐UITextView的时间文本,如果UITextView的消息文本的最后一句太长,那么时间就会推到下一行。因此,我实际上正在尝试根据UITextView的消息框调整UILabel的时间。
消息框时间布局图像
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的宽度相比较,以了解它是否超过了但没有运气。有办法吗?
发布于 2016-05-08 09:09:34
这是我写的解决问题的代码。感谢格雷格给我指明了正确的方向。
+ (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;
}发布于 2016-05-08 02:12:30
黑客将自动添加一个空白处,时间长度到每条消息的末尾。
let userMessageLabel.text = userMessage + "        "然后,让时间总是重叠的最后一行。如果空格的数量是正确的,文本和时间将永远不会触及。
https://stackoverflow.com/questions/37095325
复制相似问题