web-dev-qa-db-ja.com

iPhone UITextFieldの背景色

borderStyle= UITextBorderStyleRoundedRectUITextFieldの背景色を制御できません。このボーダースタイルでは、backgroundColorプロパティは、丸みを帯びた長方形の内側のエッジに沿った非常に細い線のみを制御するように見えます。残りのフィールドは白のままです。

ただし、borderStyleUIBorderStyle=UITextBorderStyleBezelに設定されている場合、UITextFieldの背景全体はbackgroundColorプロパティによって制御されます。

これは機能ですか? backgroundColorUITextFieldborderStyle=UITextBorderStyleRoundedRectで制御する方法はありますか?

22
Stephen Joy

UITextFieldの背景色を変更するには、最初に、Interface Builderで、またはプログラムで、「丸め」スタイル(「境界なし」スタイルなど)とは異なるスタイルのテキストフィールドを使用する必要があります。

その後、簡単に背景色を変更できます

textField.backgroundColor = backgroundColor;

ここで、textFieldはUITextFieldであり、backgroundColorはUIColorです。

さらなるヒントとして、角の丸い外観を復元したい場合は、最初に

#import <QuartzCore/QuartzCore.h>

そして設定

textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES

この機能が機能するには

32
Peter Johnson

colored UITextField using overlay

他の回答では、丸みのある四角形スタイルのUITextFieldに影がありません。多くのオプションを試した後、UIViewをUITextFieldの上に配置し、同じフレームと自動サイズ変更マスクを使用して、アルファを0.3に設定し、背景を青色に設定しました。次に、Peter Johnsonの回答のスニペットを使用して、色付きのオーバーレイビューから丸みを帯びたエッジを切り取りました。また、IBの[ユーザー操作有効]チェックボックスをオフにして、タッチイベントをその下のUITextFieldにカスケードできるようにします。今完璧に見えます。

副作用:テキストも色付けされます(黒の場合でもかまいません)。

#import <QuartzCore/QuartzCore.h>

colorizeOverlayView.layer.cornerRadius = 6.0f;
colorizeOverlayView.layer.masksToBounds = YES;
14
Jacob Jennings

これは私たちが思っていたよりもはるかに簡単です。

ColorWithRed:green:blue:を使用してbackgroundColorを設定する場合、色は浮動小数点数で、1の分数である必要があります。次に例を示します。

[myTextField setBackgroundColor:[UIColor colorWithRed:255.0f/255.0f green:110.0f/255.0f blue:110.0f/255.0f alpha:1];

これを行うと、すべてのTextFieldスタイルが機能するように見えます。

以下も参照してください: 背景色が期待どおりに機能しない

6
bndouglas

ビュー階層のダンプから、UITextFieldにはタイプUITextFieldRoundedRectBackgroundViewのサブビューが1つあり、サブビューには12のUIImageViewsがあることがわかります。

Erica Sadunによる 古い記事 は、追加のUILabelを示しています。これは、Apple SDKの新しいバージョンでは明らかに削除されています。

UIImageViewsをいじるのに大きな変化はありません。

だから答えは:背景色を変更する方法はおそらくないでしょう。

4
Can Berk Güder

RoundedRectテキストボックスの下に影を付けることができるので、ジェイコブの答えはここでの最良の答えでした。

彼の解決策を詳しく説明するには、次のようにする必要があります。

    UIView *textFieldShadeView=[[UIView alloc] init];
[textFieldShadeView setFrame:myTextFiled.frame];
textFieldShadeView.layer.cornerRadius=8.0f;
textFieldShadeView.layer.masksToBounds=YES;
textFieldShadeView.backgroundColor=[UIColor blueColor];
textFieldShadeView.alpha=0.3;
textFieldShadeView.userInteractionEnabled=NO;
[self.view addSubview:textFieldShadeView];
[textFieldShadeView release];

ここで、myTextFiledは、背景色を変更しようとしている丸められた四角形のテキストフィールドです。上記を行うと、ジェイコブの青みがかったテキストフィールドと適切なシャドウが表示されます。

3
MyCSharpCorner
...
textField.opaque = YES;
textField.backgroundColor=[UIColor blueColor];
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES
1
Iustin Octav

あなたはこれを行うことができます:

textField.backgroundColor = [UIColor whiteColor];

この場合、私は白い色でそれをやっていますが、uiColorの別の色でそれを行うことができます。

それが役に立てば幸い

0
yuukan