Как установить границу UITextView так же, как цвет границы UITextField

По умолчанию UITextField имеет светло-серый цвет в качестве цвета границы. Я хочу, чтобы у моего UITextView был тот же цвет границы, что и у UITextField.

Я старался:

myTextView.layer.borderColor = UIColor.lightGrayColor().CGColor
or
myTextView.layer.borderColor = UIColor.lightTextColor().CGColor
or 
myTextView.layer.borderColor = myTextField.layer.borderColor

Они все еще должны иметь другой цвет. Подскажите, пожалуйста, как увидеть границу UITextView, соответствующую цвету UITextField?

Спасибо.

7 ответов

Решение

Попробуйте этот код.

UIColor *borderColor = [UIColor colorWithRed:204.0/255.0 green:204.0/255.0 blue:204.0/255.0 alpha:1.0];

myTextView.layer.borderColor = borderColor.CGColor;
myTextView.layer.borderWidth = 1.0;
myTextView.layer.cornerRadius = 5.0;

измените значения borderWidth и cornerRadius, чтобы получить точный интерфейс UITextField.

Этот код Swift также работает для установки того же цвета границы, ширины и радиуса, что и UITextField:

myTextView.layer.borderColor = UIColor(red: 0.9, green: 0.9, blue: 0.9, alpha: 1.0).CGColor
myTextView.layer.borderWidth = 1.0
myTextView.layer.cornerRadius = 5

У меня был такой же вопрос для iOS 10, и я не смог найти ответ, но это то, что я нашел, используя Цифровой Цветовой Метр в Утилитах и ​​Симулятор iOS.

Swift 3 / iOS 10

let color = UIColor(red: 186/255, green: 186/255, blue: 186/255, alpha: 1.0).cgColor
myTextView.layer.borderColor = color
myTextView.layer.borderWidth = 0.5
myTextView.layer.cornerRadius = 5

swift 4.x/ios11.

Я сделал еще одно измерение в PSD с помощью симулятора. Я могу подтвердить, что радиус равен 0,5, а цвет равен 0,8, так как 205/255 = 0,8 (или "cdcdcd" в HEX, как предполагает PSD, НО ширина должна быть 0,5. (Я прикрепил PSD, где можно сравнить радиус поля редактирования (UITExtField) И радиус применяется к UITextView.

Так что это правильно:

    let borderGray = UIColor(red: 0.8, green: 0.8, blue: 0.8, alpha: 1)
    self.TxtV.layer.borderColor = borderGray.cgColor
    self.TxtV.layer.borderWidth = 0.5
    self.TxtV.layer.cornerRadius = 5

Примечание. Я пытался получить цвет из TextField уже в View, но получил:

if let borderGray = self.cellPhoneTxt.layer.borderColor {let BG = UIColor (cgColor: borderGray)

    print(BG)
    var red: CGFloat = 0
    var green: CGFloat = 0
    var blue: CGFloat = 0
    var alpha: CGFloat = 0
    BG.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
    print(red, green, blue, alpha)

}

но я попал в консоль:

kCGColorSpaceModelRGB 0 0 0 1

0,0 0,0 0,0 1,0

так что, кажется, Apple использует полный черный И немного альфа.

Попробуйте этот код для Swift

let borderColor = UIColor.whiteColor.Cgcolor()

myTextView.layer.borderColor = borderColor.CGColor;
myTextView.layer.borderWidth = 1.0;
myTextView.layer.cornerRadius = 5.0;

Как в Swift 5.2 и с поддержкой темного режима:)

Если ваше текстовое поле похоже:

myTextField.layer.cornerRadius = 10
myTextField.layer.borderWidth = 1
myTextField..layer.borderColor = UIColor.systemGray4.cgColor

тогда ваш UITextView будет выглядеть точно так же:

myTextView.layer.cornerRadius = 10
myTextView.layer.borderWidth = 1.0
myTextView.layer.borderColor = UIColor.systemGray4.cgColor

Точный цвет:

Objective-C:

[UIColor colorWithRed:0.76 green:0.76 blue:0.76 alpha:1.0].CGColor;

Swift:

UIColor(red:0.76, green:0.76, blue:0.76, alpha:1.0).CGColor

Для общего решения по всему проекту. Вы можете изменить класс UIView и добавить к нему эти методы.

-(void)setBorderColor:(UIColor *)borderColor{
    self.layer.borderColor = (borderColor).CGColor;
}
-(UIColor*)borderColor{
    return [UIColor colorWithCGColor: self.layer.borderColor];
}

//Getter and setter for border width
-(void)setBorderWidth:(NSInteger)borderWidth{
    self.layer.borderWidth = borderWidth;
}
-(NSInteger)borderWidth{
    return  (NSInteger)roundf((self.layer.borderWidth));
}

Это расширение для UIView. Просто добавьте эти файлы UIView+Designable.h/m в свой проект, и вы увидите несколько дополнительных параметров в инспекторе атрибутов.

Другие вопросы по тегам