Приписываемые строки в Appcelerator и применение средней строки @ symbol

#javascript #ios #appcelerator

#javascript #iOS #appcelerator

Вопрос:

Я немного борюсь с приписываемыми строками в Appcelerator и надеялся на некоторую помощь.

Итак, у меня есть несколько сценариев.

Я использую API для получения информации о пользователе, но приложение должно отображать указанное имя пользователя с @ перед ним и иметь цвет, отличный от остальной части строки. Теперь это нормально для экранов, на которых в начале указано имя пользователя, но, к сожалению, я не могу заставить его работать в середине строки.

Вот текущий код:

 var attr = Ti.UI.createAttributedString({
                                        text: '@'   text,
                                        attributes: [{
                                            type: Ti.UI.ATTRIBUTE_FOREGROUND_COLOR,
                                            value: '#ff3333',
                                            range: [text.indexOf(userToHighlight), (userToHighlight).length 1]
                                        }]
                                    });

                                    var notificationMessage = Ti.UI.createLabel({
                                        attributedString: attr,
                                        left: 0,
                                        top: 5,
                                        font: {
                                            fontFamily: 'OpenSans-Light',
                                            fontSize: 13
                                        }
                                    });
  

И это то, как должен выглядеть результат в разных сценариях….

  1. @username нравится ваш пост
  2. Теперь вы друзья с @username

Итак, условия для этих строк следующие….

  1. имя пользователя и @ должны быть красными, остальная часть строки должна быть черной
  2. имя пользователя и @ должны быть красными, остальная часть строки должна быть черной

Сценарий 1 в порядке, но сценарий 2 в настоящее время выглядит так…

@Теперь вы друзья с именем пользователя

Итак, @ находится в начале, главный вопрос в том, как мне прикрепить его к средней строке имени пользователя?

API возвращает имя пользователя, и я добавил его в переменную здесь:

 var userToHighlight = json[i].participants[1].username;
  

Есть идеи, как этого можно достичь?

Саймон

Ответ №1:

Ввести имя пользователя в строку не так сложно при использовании String.format() . Хороший учебник можно найти на TiDev.

В основном:

 var message = String.format('Welcome, %s! You are visitor number %d', forename, number);
  

В вашем случае создайте исходный текст с переменными и введите их позже.

 var text = "You are now friends with @%s";
var text = "@%s likes your post";
  

Затем в приписываемой строке:

 text: String.format(text, userToHighlight)
  

Комментарии:

1. моя текстовая переменная является динамической (из API), поэтому строки всегда будут разными, предположим, что это все еще может быть применено таким же образом?

2. ДА. Если вы предоставляете %s с сервера, который исправляет это

3. Разве мне не нужно было бы возвращать каждый тип текстового ответа обратно с включенным %s? Итак, получите сообщение от API, а затем создайте текстовую переменную с разными позициями для каждого сценария имени пользователя. На самом деле это сложно объяснить! Надеюсь, я не путаю вопросы