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.
Je ne sais pas pourquoi ça casse aux coins. Aidez-moi à corriger mon champ de texte comme l'image ci-dessous.
Merci d'avance..!
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 ..
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];
textField.layer.cornerRadius=textfield.frame.size.height/2;
textField.clipsToBounds=YES;
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
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];
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
}
`