絵文字を含む文字列で NSForegroundColorAttributeName を使用すると、文字列が垂直方向に移動します。
次に例を示します。
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 21)];
label1.text = @"@Hashtag";
//label1.backgroundColor = [UIColor redColor];
label1.numberOfLines = 0;
label1.shadowColor = [UIColor colorWithWhite:1 alpha:0.5];
label1.shadowOffset = CGSizeMake(1,1);
[label1 sizeToFit];
[self.view addSubview:label1];
NSString *comment = @"@Hashtag ";
NSMutableAttributedString *commentAttributedString = [[NSMutableAttributedString alloc] initWithString:comment];
[commentAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0, comment.length)];
[commentAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, 8)];
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 21)];
label2.attributedText = commentAttributedString;
label2.numberOfLines = 0;
label2.shadowColor = [UIColor colorWithWhite:1 alpha:0.5];
label2.shadowOffset = CGSizeMake(1,1);
[label2 sizeToFit];
[self.view addSubview:label2];
次の結果が得られます。
緑のラベルがずれています。これは iOS 7 でのみ発生し、iOS 6 ではすべて正常に動作します。
なぜこれが起こるのか誰か知っていますか?
敬具
アルノ