2012-03-13 7 views
3

私は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に問題がありますか?推奨される回避策私は一時的にレイヤーを削除しようとしましたが、新しい最小ラベルや同じ結果を作成することさえできます。

+0

ソースコードでユニコード文字を使用する代わりにユニコードエスケープ(@ "\ u_whatever_")を使用するとどうなりますか?あなたのソースにユニコード文字を入れるのは悪い考えでしたが、そのための決定的な情報源はありません。 – jrturton

+0

私にとってはうまくいく更新と修正ですが、依然として非常に奇妙です。他の誰かがこの曖昧な問題に遭遇した場合、私はシステムフォントの代わりに名前付きフォントを使用するとそれを修正するようだと分かった。 – skymatt70

+0

@jrturton、素晴らしい提案です。同じように動作します。その文字とシステムフォントだけの場合は常に黒ですが、コードを読んでいるならばもっと正確です@ "\ u2714"をそのまま残します。 – skymatt70

答えて

1

私のために動作しますが、まだ非常に奇妙な更新と修正。他の誰かがこの曖昧な問題に遭遇した場合、私はシステムフォントの代わりに名前付きフォントを使用するとそれを修正するようだと分かった。

+1

私はあなたについて知りませんが、名前付きフォントが特にZapf Dingbatsの場合にのみ動作させることができました。他のフォント(私が見つけたもの)はその文字を持っているように見えるので、5.1でそれが明示的に追加した絵文字グラフィックに戻ります。 – zem

+1

zem、私は "Arial Unicode MS"と\ 2714文字を使用していて、それを赤色にすることができます。 – skymatt70

+0

奇妙な。私はArial Unicode MSがキャラクタービューアーでそのグリフを持つ別のフォントであることを知りましたが、iOSプロジェクトのインターフェースビルダーで私にとっては選択肢ではありません。たぶんコードで指定することはできますが、そこには指定できませんか? – zem

0

iOS9では、非標準フォントの重いチェックマークに色を付ける可能性がなくなりました。これは、U+2714 HEAVY CHECK MARKがAppleの絵文字セットに含まれており、単色のUnicode文字の代わりにフルカラーのビットマップとして描画されるためです。

これを防ぐには、U+FE0E VARIATION SELECTOR-15文字を使用します。文字列を@"\u2714\uFE0E"に変更すると、色を付けることができます。

isChecked.text = @"\u2714\uFE0E"; 
isChecked.textColor = [UIColor redColor]; 
関連する問題