在Appcelerator中归因于字符串并应用@符号中间字符串

时间:2016-10-04 13:02:23

标签: 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
  3. 的朋友

    因此,这些字符串的条件如下......

    1. 用户名和@应为红色,其余字符串应为黑色
    2. 用户名和@应为红色,其余字符串应为黑色
    3. 场景1没问题,但是场景2目前看起来像这样......

      @您现在是用户名

      的朋友

      所以@开头,主要的问题是我如何将它附加到用户名mid string?

      API会返回用户名,我已将其添加到此处的变量中:

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

      有关如何实现这一目标的任何想法?

      西蒙

1 个答案:

答案 0 :(得分: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)