it-swarm.com.ru

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

Заранее спасибо..!

20
iOS

просто удалите эту строку ...

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;

и добавьте этот код также ..

    [mobileNumberField setBackgroundColor:[UIColor whiteColor]];
    [mobileNumberField.layer setBorderColor:[UIColor grayColor].CGColor];
    [mobileNumberField.layer setBorderWidth:1.0];

я надеюсь, что это поможет вам ..

28
Paras Joshi

Обновите свой как ниже.

    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];
11
Paramasivan Samuttiram
textField.layer.cornerRadius=textfield.frame.size.height/2;

textField.clipsToBounds=YES;
6
Miti

Причина, по которой углы обрезаются, заключается в том, что в текстовое поле встроен вид. Когда вы устанавливаете радиус угла, применяется к виду ТО и, таким образом, углы внутреннего текстового поля кажутся обрезанными - в действительности они даже не изменились. 

Решение состоит в том, чтобы поместить UITextField внутри UIView, установить для текстового поля borderstyle значение none. Затем примените спецификацию границы и радиуса угла к пользовательскому интерфейсу. Обратите внимание на 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
3
oyalhi

Вот решение вашей проблемы

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];
1
junaidsidhu

Решение 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
    }

`

0
Prasad09