私はiOSアプリケーションを開発していましたが、最近xCode 4.3.1とiOS 5.1シミュレータに "アップグレード"され、ちょうど1文字で非常に奇妙な問題があります。それはキャラクタービューアーで "ヘビーチェックマーク"と呼ばれ、5.0.1以下で私のアプリで素晴らしいと、.textColor = [UIColor redColor]で色付けされています。 5.1ではシミュレータで黒く表示され、電話機がjailbrokenされているため、5.1で実際のデバイスでチェックしていません。他のキャラクターを置くと、それは赤色になりますが、この1つの特定のキャラクターは常に黒く表示されます。前にスペースを置くと、赤色に表示されますが、境界にレイヤーを使用しているので、間隔はオフになっています。以下は実際のコードですが、よりシンプルなラベルを試してみましたが、同じ問題があります。IOS 5.1重いチェックマーク付きのUILabelはTextColorを無視します
isChecked = [[[UILabel alloc] initWithFrame:CGRectMake(20.0,9.0,20,20)] autorelease];
isChecked.font = [UIFont boldSystemFontOfSize:24.0];
isChecked.backgroundColor = [UIColor clearColor];
isChecked.textColor = [UIColor redColor];
isChecked.layer.borderColor = [UIColor blackColor].CGColor;
isChecked.layer.borderWidth = 2.0;
isChecked.text = @"✔";
isChecked.tag = 2;
[cell.contentView addSubview:isChecked];
他の誰かがこの特殊文字やUILabel.textColorに問題がありますか?推奨される回避策私は一時的にレイヤーを削除しようとしましたが、新しい最小ラベルや同じ結果を作成することさえできます。
ソースコードでユニコード文字を使用する代わりにユニコードエスケープ(@ "\ u_whatever_")を使用するとどうなりますか?あなたのソースにユニコード文字を入れるのは悪い考えでしたが、そのための決定的な情報源はありません。 – jrturton
私にとってはうまくいく更新と修正ですが、依然として非常に奇妙です。他の誰かがこの曖昧な問題に遭遇した場合、私はシステムフォントの代わりに名前付きフォントを使用するとそれを修正するようだと分かった。 – skymatt70
@jrturton、素晴らしい提案です。同じように動作します。その文字とシステムフォントだけの場合は常に黒ですが、コードを読んでいるならばもっと正確です@ "\ u2714"をそのまま残します。 – skymatt70