2012-03-28 3 views
1

私は誰もがこのフォーラムに答えるが、何も私のために働かない...私は上書きしようとしている二つのオプションを試してみました:UITextFieldのプレースホルダの色を変更するにはどうすればよいですか?

- (void)drawPlaceholderInRect:(CGRect)rect

とも:

[self.myTextField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

何も起こる...まだ同じグレーの色...多分私は何かを継承しなければならない、私は知らない...任意の提案?

答えて

4

これを実行する最も簡単な方法:私は別のバグを知った

UILabel *placeholderAppearance; 
if (@available(iOS 9, *)) { 
    placeholderAppearance = [UILabel appearanceWhenContainedInInstancesOfClasses:@[[UITextField class]]]; 
} else { 
    placeholderAppearance = [UILabel appearanceWhenContainedIn:[UITextField class], nil]; 
} 
placeholderAppearance.textColor = [UIColor redColor]; 

[EDITED]を これを使用した後、上記の仕事をしたが、それはまた、他のすべての色をリセット私のビューのラベルをDefault Blackに設定します。これを克服するために、UILabelクラスをサブクラス化し、他のすべてのラベルでクラスを使用する必要がありました。あなたが帰属プレースホルダを使用することができiOS6から

+0

感謝をどのように動作するかを知って、ありがとうございます!もう1つのこと:編集可能な青い垂直バーの色を変更することは可能ですか? – sergiocg90

+0

これについて実際にはわかりませんが、私は上記のプレースホルダーに何かを追加したいと思います。これを使用した後、私は別のバグを知るようになりましたが、上記は仕事をしましたが、私のビューの他のすべてのラベルの色をDefault Blackにリセットしました。これを克服するために、UILabelクラスをサブクラス化し、他のすべてのラベルでクラスを使用する必要がありました。 –

1

drawPlaceholderInRect:UITextFieldを参照してください。 UITextFieldをサブクラス化し、このメソッドをオーバーライドして、必要なテキストカラーでグラフィックスコンテキストを設定し、スーパーインプリメンテーションを呼び出す必要があります。このメソッドが呼び出される時まで

は、現在のグラフィックスコンテキストはすでにデフォルト環境と 描画のためのテキストの色で構成 です。オーバーライドされた方法では、現在の コンテキストを設定してから、実際の図面を実行するためにsuperを呼び出すか、直接図面を で実行することができます。テキストを自分でレンダリングする場合は、 はスーパーを呼び出さないでください。

+0

は今、私はそれが本当に – sergiocg90

0

textfield.attributedPlaceholder = [[NSAttributedString alloc] initWithString:textfield.placeholder attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}]; 
関連する問題