2012-12-05 10 views
18

Io porto avanti il ​​problema che affronto. Sto creando un UITextField programmaticamente come di seguito.UITextField - Numero angolo arrotondato

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

L'uscita è l'immagine allegata.

enter image description here

io non so perché è la rottura in corrispondenza degli angoli. Aiutami a correggere il mio campo di testo come l'immagine allegata di seguito.

enter image description here

Grazie in anticipo ..!

risposta

27

sufficiente rimuovere questa riga ...

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect; 

e aggiungere questo codice anche ..

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

Spero che questo aiuto voi ..

10

Aggiorna come di seguito.

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

Il campo di testo prende UITextBorderStyleNone per impostazione predefinita. Se rimuovo la linea sopra, non ci sono confini. – iOS

+0

Puoi invece impostare borderColor. –

+0

Provato ad impostare il colore del bordo. Ma non si applica in quanto non vi è alcun confine. – iOS

1

Ecco la soluzione del tuo problema

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

Funziona, ma quando lo applico non c'è posto tra il testo segnaposto e il bordo principale di txtField.Sai come risolverlo (cerco di mettere in bianco all'inizio del segnaposto in questo modo: "placeholderText" invece di "placeholderText" ma non funziona)? –

3

Il motivo per cui gli angoli sono tagliati è perché c'è una vista che racchiude il campo di testo. Quando si imposta il raggio dell'angolo, si applica a quella vista e quindi gli angoli del campo di testo interno sembrano tagliati - in realtà non sono nemmeno cambiati.

La soluzione consiste nel mettere il UITextField all'interno di UIView, impostare textfield borderstyle su none. Quindi applica le specifiche del raggio e del raggio d'angolo alla vista utente. Nota borderColor, che è molto vicino, se non uguale, a UITextField borderColor.

Come della scrittura, testato e funziona in Xcode 7.3.1, Swift 2.2, iOS 8 e 9.

Swift:

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

Swift 3 soluzione:

ho scritto separato funzione per impostare il bordo e il raggio dell'angolo su qualsiasi livello in rapido, devi solo passare il livello di qualsiasi vista, larghezza del bordo, raggio dell'angolo e colore del bordo alla seguente funzione

` func setBorderAndCornerRadius(layer: CALayer, width: CGFloat, radius: CGFloat,color : UIColor) { 
     layer.borderColor = color.cgColor 
     layer.borderWidth = width 
     layer.cornerRadius = radius 
     layer.masksToBounds = true 
    } 

`

3
textField.layer.cornerRadius=textfield.frame.size.height/2; 

textField.clipsToBounds=YES; 
+0

Crea campo di testo circolare – Miti

Problemi correlati