web-dev-qa-db-fra.com

UITextField - Numéro de coin arrondi

Je soulève le problème auquel je suis confronté. Je crée une UITextField par programme comme ci-dessous.

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

La sortie est l'image attachée.

enter image description here

Je ne sais pas pourquoi ça casse aux coins. Aidez-moi à corriger mon champ de texte comme l'image ci-dessous.

enter image description here

Merci d'avance..!

20
iOS

il suffit de supprimer cette ligne ...

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;

et ajouter ce code aussi ..

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

j'espère que cela vous aidera ..

28
Paras Joshi

Mettez à jour votre comme ci-dessous.

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

textField.clipsToBounds=YES;
6
Miti

La raison pour laquelle les coins sont coupés est qu’il existe une vue englobante dans le champ de texte. Lorsque vous définissez le rayon des angles, cela s’applique à cette vue. Ainsi, les coins du champ de texte intérieur semblent coupés. En réalité, ils n’ont même pas changé. 

La solution consiste à placer la UITextField dans UIView, et de définir le champ textwardswardstyle sur none. Appliquez ensuite les spécifications de bordure et de rayon de coin à la vue uiview. Notez que borderColor est très proche, sinon identique, de UITextField borderColor.

Au moment de l'écriture, testé et fonctionne dans Xcode 7.3.1, Swift 2.2, iOS 8 et 9.

Rapide:

textField.borderStyle = UITextBorderStyle.None
textBorderView.layer.cornerRadius = 5
textBorderView.layer.borderWidth = 1
textBorderView.layer.borderColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.2).CGColor
3
oyalhi

Voici la solution de votre problème

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 solution:

J'ai écrit une fonction distincte pour définir la bordure et le rayon des angles sur n'importe quel calque dans Swift. Vous devez simplement passer le calque de la vue, de la largeur, du rayon et de la couleur de la bordure à la fonction suivante.

` 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