Цвет фона iPhone UITextField
Я не могу контролировать цвет фона UITextField
с помощью borderStyle= UITextBorderStyleRoundedRect
. С этим стилем границы свойство backgroundColor
, по-видимому, управляет очень узкой линией вдоль внутреннего края закругленного прямоугольника. Остальная часть поля остается белой.
Однако, если для параметра borderStyle
установлено значение UIBorderStyle=UITextBorderStyleBezel
, тогда весь фон UITextField
управляется свойством backgroundColor
.
Это функция? Есть ли способ управлять backgroundColor
a UITextField
с помощью borderStyle=UITextBorderStyleRoundedRect
?
Ответы
Ответ 1
Чтобы изменить цвет фона в UITextField, вам сначала нужно использовать другой стиль текстового поля для "закругленного" стиля (например, стиль "без границ" ) либо в Interface Builder, либо программно.
Затем вы можете легко изменить цвет фона с помощью
textField.backgroundColor = backgroundColor;
где textField - ваш UITextField, а backgroundColor - UIColor.
В качестве дополнительной подсказки - если вы хотите восстановить внешний вид закругленных углов, вам сначала нужно
#import <QuartzCore/QuartzCore.h>
а затем установите
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES
для этой функции работать
Ответ 2
![colored UITextField using overlay]()
В других ответах нет теней на UITextField с закругленным прямоугольным стилем. Попробовав множество опций, я, наконец, просто разместил UIView над UITextField, с идентичной рамкой и маской с автоматическим изменением размера, установите альфа-значение в 0.3 и установите фон в синий цвет. Затем я использовал фрагмент из ответа Питера Джонсона, чтобы скопировать округленные края с цветного наложения. Кроме того, снимите флажок "Взаимодействие с пользователем включен" в IB, чтобы позволить сенсорным событиям каскадироваться до UITextField под ним. Выглядит отлично.
Побочный эффект: ваш текст также будет раскрашен (не имеет значения, если он черный)
#import <QuartzCore/QuartzCore.h>
colorizeOverlayView.layer.cornerRadius = 6.0f;
colorizeOverlayView.layer.masksToBounds = YES;
Ответ 3
Это намного проще, чем мы все думали.
При настройке backgroundColor с использованием colorWithRed: зеленый: синий: цвета должны быть плавающими и должны быть частью 1. Например:
[myTextField setBackgroundColor:[UIColor colorWithRed:255.0f/255.0f green:110.0f/255.0f blue:110.0f/255.0f alpha:1];
Все стили TextField работают, когда вы это делаете.
Также смотрите: цвет фона не работает должным образом
Ответ 4
Дамп иерархии представлений показывает, что UITextField
имеет одно подобие типа UITextFieldRoundedRectBackgroundView
, которое, в свою очередь, имеет 12 UIImageView
s.
более старая статья от Erica Sadun показывает дополнительный UILabel
, который Apple явно удалил в более поздних версиях SDK.
Скручивание с помощью UIImageView
не сильно меняется.
Итак, ответ таков: возможно, нет способа изменить цвет фона.
Ответ 5
Ответ Джейкоба был лучшим ответом здесь, поскольку он позволяет сохранять тени под текстовыми полями RoundedRect, поэтому +1 для Jacob!
Чтобы подробно остановиться на его решении, вам нужно сделать следующее:
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 - это округленное прямоугольное текстовое поле, которое вы пытаетесь изменить цвет фона. Сделайте выше, и вы получите синеватое текстовое поле Иакова вместе с соответствующими тенями.
Ответ 6
...
textField.opaque = YES;
textField.backgroundColor=[UIColor blueColor];
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES
Ответ 7
Вы можете сделать это:
textField.backgroundColor = [UIColor whiteColor];
В этом случае я делаю это с белым цветом, но вы можете сделать это с другим цветом для uiColor
.
Надеюсь, что это поможет