0

さまざまな属性を持つさまざまな文字列を保存し、それらすべてを 1 つの配列に保存してから、オブジェクトを 1 つのラベルに表示しますが、各オブジェクトにはそれぞれの属性を付けます。

助言がありますか?

編集: rmaddy の回答から派生したソリューション

NSDictionary *redAttrs    = @{NSForegroundColorAttributeName:[UIColor redColor]};
NSDictionary *greenAttrs  = @{NSForegroundColorAttributeName:[UIColor colorWithRed:0.118 green:0.506 blue:0.000 alpha:1.000]};
NSDictionary *orangeAttrs = @{NSForegroundColorAttributeName:[UIColor orangeColor]};

NSString *stringUm = @"Brazil";
NSString *stringDois = @"USA";
NSString *stringTres = @"England";

NSMutableAttributedString *redString = [[NSMutableAttributedString alloc] initWithString:stringUm];
[redString setAttributes:redAttrs range:NSMakeRange(0,4)];

NSMutableAttributedString *greenString = [[NSMutableAttributedString alloc] initWithString:stringDois];
[greenString setAttributes:greenAttrs range:NSMakeRange(0,2)];

NSMutableAttributedString *orangeString = [[NSMutableAttributedString alloc] initWithString:stringTres];
[orangeString setAttributes:orangeAttrs range:NSMakeRange(0,4)];


NSArray *myStrings = [[NSArray alloc] initWithObjects:redString, greenString, orangeString, nil];

NSLog(@"%@", [myStrings description]);

NSMutableAttributedString *result = [[NSMutableAttributedString alloc]init];
NSAttributedString *delimiter = [[NSAttributedString alloc] initWithString: @", "];
for (NSAttributedString *str  in myStrings) {
    if (result.length) {
        [result appendAttributedString:delimiter];
    }
    [result appendAttributedString:str];
}

_lblUm.attributedText = result;
4

2 に答える 2

4

あなたの質問は非常に不明確です。しかし、ゲリータンの答えに対するあなたのコメントに基づいて、あなたの目標はより明確になります。

オブジェクトの配列がある場合は、NSAttributedStringそれらをすべて一緒にNSMutableAttributedString.

NSArray *myStrings = ... // your array of NSAttributedString objects
NSMutableAttributedString *result = [[NSMutableAttributedString alloc] init];
// Put this delimiter between each string - change as desired
NSAttributedString *delimiter = [[NSAttributedString alloc] initWithString:@", "];
for (NSAttributeString *str in myStrings) {
    if (result.length) {
        [result appendAttributedString:delimiter];
    }
    [result appendAttributedString:str];
}

myLabel.attributedText = result;
于 2013-01-23T23:20:17.300 に答える
0

UILabel は 1 つの NSAttributedString のみをサポートします。あなたができることは、配列の各文字列に対して複数の UILabel を並べて配置することだと思います

于 2013-01-23T22:37:39.257 に答える