Цвет границы UITextField
У меня есть действительно большое желание установить собственный цвет на границу UITextField. Но до сих пор я мог узнать, как изменить стиль линии границы.
Я использовал свойство background, чтобы установить цвет фона таким образом:
self.textField.backgroundColor = textFieldColor;
Но мне нужно изменить цвет границы UITextField. И мой вопрос был о том, как изменить цвет границы.
Ответы
Ответ 1
Импорт структуры QuartzCore
в класс:
#import <QuartzCore/QuartzCore.h>
и для изменения цвета рамки используйте следующий фрагмент кода (я устанавливаю его в redColor),
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES;
textField.layer.borderColor=[[UIColor redColor]CGColor];
textField.layer.borderWidth= 1.0f;
Для возврата к исходному макету просто установите цвет рамки для очистки цвета,
serverField.layer.borderColor=[[UIColor clearColor]CGColor];
в быстром коде
textField.layer.borderWidth = 1
textField.layer.borderColor = UIColor.whiteColor().CGColor
Ответ 2
Попробуйте следующее:
UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)];
theTextFiels.borderStyle=UITextBorderStyleNone;
theTextFiels.layer.cornerRadius=8.0f;
theTextFiels.layer.masksToBounds=YES;
theTextFiels.backgroundColor=[UIColor redColor];
theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor];
theTextFiels.layer.borderWidth= 1.0f;
[self.view addSubview:theTextFiels];
[theTextFiels release];
и импортируйте QuartzCore:
#import <QuartzCore/QuartzCore.h>
Ответ 3
Импортируйте следующий класс:
#import <QuartzCore/QuartzCore.h>
//Код для установки серого цвета для границы текстового поля
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0
green:171.0/255.0
blue:171.0/255.0
alpha:1.0] CGColor]];
Замените 171.0
соответствующим номером цвета, если требуется.
Ответ 4
этот вопрос проявляется довольно высоко в поиске Google и работает по большей части! Я обнаружил, что ответ Салмана Заиди был частично правильным для iOS 7.
Вам нужно внести изменения в код "возврата". Я обнаружил, что следующие для реверсирования отлично работают:
textField.layer.cornerRadius = 0.0f;
textField.layer.masksToBounds = YES;
textField.layer.borderColor = [[UIColor blackColor] CGColor];
textField.layer.borderWidth = 0.0f;
Я понимаю, что это, скорее всего, связано с изменениями в iOS 7.
Ответ 5
Чтобы упростить эти действия из принятого ответа, вы также можете создать Категория для UIView
(так как это работает для всех подклассов UIView, а не только для текстовых полей:
UIView + Additions.h:
#import <Foundation/Foundation.h>
@interface UIView (Additions)
- (void)setBorderForColor:(UIColor *)color
width:(float)width
radius:(float)radius;
@end
UIView + Additions.m:
#import "UIView+Additions.h"
@implementation UIView (Additions)
- (void)setBorderForColor:(UIColor *)color
width:(float)width
radius:(float)radius
{
self.layer.cornerRadius = radius;
self.layer.masksToBounds = YES;
self.layer.borderColor = [color CGColor];
self.layer.borderWidth = width;
}
@end
Применение:
#import "UIView+Additions.h"
//...
[textField setBorderForColor:[UIColor redColor]
width:1.0f
radius:8.0f];
Ответ 6
Если вы используете TextField с закругленными углами, используйте этот код:
self.TextField.layer.cornerRadius=8.0f;
self.TextField.layer.masksToBounds=YES;
self.TextField.layer.borderColor=[[UIColor redColor]CGColor];
self.TextField.layer.borderWidth= 1.0f;
Чтобы удалить границу:
self.TextField.layer.masksToBounds=NO;
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];
Ответ 7
borderColor на любом представлении (или подклассе UIView) также может быть задан с помощью раскадровки с небольшим количеством кодирования, и этот подход может быть очень удобен, если вы задаете цвет границы для нескольких объектов пользовательского интерфейса.
Ниже приведены шаги по его достижению,
- Создайте категорию в классе CALayer. Объявите свойство типа UIColor с подходящим именем, я назову его как borderUIColor.
- Запишите установщик и получатель для этого свойства.
- В методе Setter просто установите свойство borderColor слоя для нового значения цвета CGColor.
- В методе "Getter" верните UIColor со слоем borderColor.
P.S: Помните, что категории не могут храниться в свойствах. 'borderUIColor' используется как вычисленное свойство, как ссылка для достижения того, на что мы фокусируемся.
Пожалуйста, ознакомьтесь с приведенным ниже примером кода;
Цель C:
Файл интерфейса:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (BorderProperties)
// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;
@end
Файл реализации:
#import "CALayer+BorderProperties.h"
@implementation CALayer (BorderProperties)
- (void)setBorderUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
- (UIColor *)borderUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
@end
Swift 2.0:
extension CALayer {
var borderUIColor: UIColor {
set {
self.borderColor = newValue.CGColor
}
get {
return UIColor(CGColor: self.borderColor!)
}
}
}
И, наконец, перейдите в свою раскадровку /XIB, следуйте оставшимся шагам;
- Щелкните объект View, для которого вы хотите установить границу цвета.
- Нажмите "Идентификационный инспектор" (третий слева) на панели "Утилита" (правая сторона экрана).
- В разделе "Пользовательские атрибуты времени выполнения" нажмите кнопку "+", чтобы добавить путь к ключу.
- Задайте тип пути для ключа "Цвет".
- Введите значение для ключевого пути как "layer.borderUIColor". [Помните, что это должно быть имя переменной , объявленное в категории, а не borderColor, здесь borderUIColor].
- Наконец, выберите нужный цвет.
Вы должны установить значение свойства layer.borderWidth как минимум 1, чтобы увидеть цвет рамки.
Построить и запустить.
Счастливое кодирование.:)
Ответ 8
Обновление для Swift 5.0
textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0