2016-05-08 8 views
0

私のアプリケーションでは、UITextViewのメッセージテキストの最後の文が長すぎる場合、WhatsAppのようにUILableの時間のテキストを整列させようとしています。次の行にプッシュします。だから私は実際にUITextViewのメッセージボックスに従ってUILabelの時刻を調整しようとしています。私は考えることができUITextViewの最終行のテキストの長さを取得する方法

message box time layout image

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のクラスを使用して、最後の行の長さを取得し、テキストの幅を計算しませんでしたが、運。何か方法はありますか?

+0

メッセージテキストに時間テキストが追加されていますか?はいの場合は、このようにする必要はありません。ここでは、メッセージ用とメッセージ用の2​​つのコントロールを使用する必要があります。 –

+0

こんにちは、2つの別々のコンポーネントを使用していて、一緒には追加されません。 – ken

答えて

0

これは私の問題を解決したコードです。グレッグのおかげで私は正しい方向へ向いてくれました。

+ (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

ハックは、自動的にすべてのメッセージの最後まで時間の長さの空白スペースを追加することです。

let userMessageLabel.text = userMessage + "  " 

次に、常に最後の行と重なるようにします。スペースの量が正しければ、テキストと時間は決して触れません。

+0

これはUITextViewとUILabelが別個のコンポーネントであり、制約を使用して整列されているため動作しません。 – ken

+0

実際にあなたはハックの正しい方向に私を指摘しました。私がする必要があるのは、スペースを最後に追加し、boundingRectWithSizeを使用して、追加の前後の高さを比較することです。ありがとう! – ken

関連する問題