2012-01-04 11 views
0

私はUILabelを持っています。これに半透明勾配を色として適用しようとしています。例えば、私はグラデーションの色をこのように設定しようとしている私のUILabelサブクラスで:レイヤーシャドウを配置したUILabelのテキストカラー透明度?

self.textColor = [UIColor colorWithPatternImage:someTransparentGradient]; 

このいじりながら、しかし、私はUILabelは透明で描くことができるように思われないことを発見しましたレイヤーシャドウが配置されている場合は。テキストの色をクリアに設定しようとしました:

self.textColor = [UIColor clearColor]; 

しかし、テキストは白になりました。アイデア?

クリアするためにテキストの色を設定し、テキストビューにレイヤーシャドウを適用すると、問題を自分で複製できます。

+0

ここでtextColorを設定しましたか?つまり、 'self.textColor = [UIColor clearColor];' – Ilanchezhian

+0

私は 'UILabel'サブクラスの中からカスタムメソッドで設定しました。 –

+0

'opaque'が' YES'になっていますか? –

答えて

1

私は通常自分の回答を受け入れませんが、この場合は私がする必要があります。これはバグのようです。レイヤシャドウがUILabelに適用されるたびに、テキストの透明度はサポートされなくなります。私はレーダーを提出します。

3

nibでUILabelを作成し、textColorをinitWithFrameに設定すると、結果が得られません。

UILabelサブクラスでは、initWithCoderと記述し、色を設定します。

-(id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     // Initialization code 
     self.textColor = [UIColor clearColor]; 
    } 
    return self; 
} 

編集

を参照してください、これがデフォルト(灰色)の背景とスクリーンショットです。

enter image description here

そして、これはsample applicationをダウンロードして試してみてください、白、背景

enter image description here

とスクリーンショットです。

+0

nibファイルから 'UILabel'を作成しましたが、' initWithFrame'をオーバーライドしませんでした。なぜなら、それがペン先からインスタンス化されていれば呼び出されないからです。私は標準の 'initWithCoder:'の後に呼び出されるカスタムイニシャライザを持っています。しかし、実際に '[UIColor clearColor]'でメソッドを試してみると、テキストはまだ白であることがわかります。 –

+0

私は 'clearColor'で試しました。 clearColorの場合、テキストは表示されません。ですから、 'initWithCoder'の中に色を設定してください。 – Ilanchezhian

+0

私はテストアプリケーションをアップロードしました。ダウンロードして試してください。 – Ilanchezhian