Я пытаюсь использовать NSMutableAttributedString для форматирования текста, чтобы он был выровнен по левому краю и по правому краю в одном и том же фрагменте текста.
Я рассмотрел аналогичный ответ в IOS Множественное выравнивание по правому и левому краю на той же строке, но не удалось заставить табуляции работать правильно.
Мое собственное решение состоит в том, чтобы сделать следующее.
Получить мою копию + добавить физические вкладки (например: \t
) в конец копии
Затем создайте стиль абзаца для моей строки времени чата, выровненной по правому краю, и добавьте его в конец строки.
У меня почти получилось;
Но проблема в том, что время вообще не выровнено; кажется, что он застрял с выравниванием по левому краю.
Я бы хотел, чтобы текст времени был справа.
Вот мой код для настройки временной части;
NSAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:message.body attributes:attributes];
NSMutableAttributedString *finalizedCopy = [attributedString mutableCopy];
if (message.sender.remoteID) [finalizedCopy appendAttributedString:tabStops];
// Add time to the chat bubble
NSString *messageTime = [[JSQMessagesTimestampFormatter sharedFormatter] timeForDate:message.date];
NSAttributedString *chatMessageTime = [[NSAttributedString alloc] initWithString:messageTime attributes:attributes];
NSMutableParagraphStyle *timeParagraphStyle = [[NSMutableParagraphStyle alloc] init];
timeParagraphStyle.alignment = NSTextAlignmentRight;
NSMutableAttributedString *dateString = [[NSMutableAttributedString alloc] initWithAttributedString:chatMessageTime];
[dateString setAttributes:@{ NSFontAttributeName : [UIFont vic_fontOfSize:10],
NSForegroundColorAttributeName: [UIColor vic_darkTextColor]
}
range:NSMakeRange(0, dateString.length)];
[dateString addAttribute:NSParagraphStyleAttributeName value:timeParagraphStyle range:NSMakeRange(0, dateString.length)];
[finalizedCopy appendAttributedString:dateString];
attributedString = [finalizedCopy copy];
Мне интересно, как лучше всего добиться желаемого эффекта.
Большое спасибо
Кроме того, если бы я использовал NSTabStops, где бы я их поместил, в конце моей левой строки или в начале моей правой строки?
ie:
NSTextTab *tabStop = [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentRight location:150 options:nil];
[paragraph setTabStops:@[tabStop]];
[finalizedCopy addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, finalizedCopy.length)];
Находится в конце моей левой строки, но визуально я не вижу результатов.
return [[VICChatMessage alloc] initWithAttributedText:attributedString sender:senderID date:message.date];}
- person Atilla Jax   schedule 17.07.2015