#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
}
});
И это то, как должен выглядеть результат в разных сценариях….
- @username нравится ваш пост
- Теперь вы друзья с @username
Итак, условия для этих строк следующие….
- имя пользователя и @ должны быть красными, остальная часть строки должна быть черной
- имя пользователя и @ должны быть красными, остальная часть строки должна быть черной
Сценарий 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, а затем создайте текстовую переменную с разными позициями для каждого сценария имени пользователя. На самом деле это сложно объяснить! Надеюсь, я не путаю вопросы