Подтвердить что ты не робот

Цвет границы UITextField

У меня есть действительно большое желание установить собственный цвет на границу UITextField. Но до сих пор я мог узнать, как изменить стиль линии границы.

Я использовал свойство background, чтобы установить цвет фона таким образом:

self.textField.backgroundColor = textFieldColor;

Но мне нужно изменить цвет границы UITextField. И мой вопрос был о том, как изменить цвет границы.

4b9b3361

Ответ 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, следуйте оставшимся шагам;

  1. Щелкните объект View, для которого вы хотите установить границу цвета.
  2. Нажмите "Идентификационный инспектор" (третий слева) на панели "Утилита" (правая сторона экрана).
  3. В разделе "Пользовательские атрибуты времени выполнения" нажмите кнопку "+", чтобы добавить путь к ключу.
  4. Задайте тип пути для ключа "Цвет".
  5. Введите значение для ключевого пути как "layer.borderUIColor". [Помните, что это должно быть имя переменной , объявленное в категории, а не borderColor, здесь borderUIColor].
  6. Наконец, выберите нужный цвет.

Вы должны установить значение свойства layer.borderWidth как минимум 1, чтобы увидеть цвет рамки.

Построить и запустить. Счастливое кодирование.:)

Ответ 8

Обновление для Swift 5.0

textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0