UITextField - закругленный угол
Я выдвигаю вопрос, с которым я сталкиваюсь. Я создаю UITextField
программно, как показано ниже.
UItextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
mobileNumberField.delegate = self;
mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
[mobileNumberField.layer setCornerRadius:14.0f];
mobileNumberField.placeholder = @"Mobile Number";
[self.paymentsHomeView addSubview:mobileNumberField];
Выход - это прикрепленное изображение.
![enter image description here]()
Я не знаю, почему он разбивается по углам. Помогите мне исправить свое текстовое поле, как показано ниже.
![enter image description here]()
Спасибо заранее..!
Ответы
Ответ 1
просто удалите эту строку...
mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
и добавьте этот код также.
[mobileNumberField setBackgroundColor:[UIColor whiteColor]];
[mobileNumberField.layer setBorderColor:[UIColor grayColor].CGColor];
[mobileNumberField.layer setBorderWidth:1.0];
Надеюсь, это поможет вам.
Ответ 2
Обновите, как показано ниже.
UITextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
mobileNumberField.delegate = self;
mobileNumberField.layer.borderWidth = 1.0f;
mobileNumberField.layer.borderColor = [UIColor lightGrayColor].CGColor;
mobileNumberField.
// mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
[mobileNumberField.layer setCornerRadius:14.0f];
mobileNumberField.placeholder = @"Mobile Number";
[self.paymentsHomeView addSubview:mobileNumberField];
Ответ 3
Причина, по которой разрезаются углы, заключается в том, что в текстовое поле присутствует закрывающий вид. Когда вы устанавливаете радиус угла, применяется к виду THAT, и, следовательно, углы внутреннего текстового поля кажутся обрезанными - на самом деле они даже не изменились.
Решение состоит в том, чтобы поместить UITextField
внутрь UIView
, установить для textfield borderstyle значение none. Затем примените спецификацию радиуса и угла к uiview. Обратите внимание на borderColor, который очень близок, если не то же самое, к UITextField borderColor.
С момента написания, тестирования и работы в Xcode 7.3.1, Swift 2.2, iOS 8 и 9.
Swift:
textField.borderStyle = UITextBorderStyle.None
textBorderView.layer.cornerRadius = 5
textBorderView.layer.borderWidth = 1
textBorderView.layer.borderColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.2).CGColor
Ответ 4
textField.layer.cornerRadius=textfield.frame.size.height/2;
textField.clipsToBounds=YES;
Ответ 5
Вот решение вашей проблемы
UITextField * txtField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 50)];
[txtField setBorderStyle:UITextBorderStyleNone];
[txtField.layer setMasksToBounds:YES];
[txtField.layer setCornerRadius:10.0f];
[txtField.layer setBorderColor:[[UIColor lightGrayColor]CGColor]];
[txtField.layer setBorderWidth:1];
[txtField setTextAlignment:UITextAlignmentCenter];
[txtField setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[self.view addSubview:txtField];
Ответ 6
Решение Swift 3:
Я написал отдельную функцию для установки граничного и углового радиуса на любой слой в swift, вам нужно просто передать слой любого вида, ширины границы, радиуса угла и цвета рамки для следующей функции
` func setBorderAndCornerRadius(layer: CALayer, width: CGFloat, radius: CGFloat,color : UIColor ) {
layer.borderColor = color.cgColor
layer.borderWidth = width
layer.cornerRadius = radius
layer.masksToBounds = true
}
`