Я пытаюсь использовать NSMutableAttributedString для форматирования текста, выравнивание по левому краю и по правому краю на одной и той же части текстаУстановка NSMutableAttributedString выравнивание по левому краю и по правому краю текста
Я рассмотрел аналогичный ответ на IOS Multiple right and left align on same line, но не смог для правильной работы табуляторов.
Мое собственное решение состоит в том, чтобы сделать следующее.
У меня копия + добавить физические вкладки (например: \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 - где же я их, в конце моей левой строки или в начале моей правой строки?
т.е.
NSTextTab *tabStop = [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentRight location:150 options:nil]; [paragraph setTabStops:@[tabStop]]; [finalizedCopy addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, finalizedCopy.length)];
в конце моей левой строки, но я не вижу никаких результатов визуально.
Вы пробовали две этикетки и автозапуск? Я знаю, что это не прямой ответ на ваш вопрос, а просто предложение. – Miknash
Я не могу этого сделать, потому что от меня будет ожидать передать атрибутString в подкаст JSQMessage и вернуть его; 'return [[VICChatMessage alloc] initWithAttributedText: атрибут отправителя: senderID date: message.date];}' –