2009-12-07 37 views
112

Ho davvero un grande desiderio di impostare il mio colore sul bordo UITextField. Ma finora ho potuto scoprire come cambiare solo lo stile della linea di confine.Colore bordo UITextField

ho usato proprietà background per impostare il colore di sfondo in modo tale:

self.textField.backgroundColor = textFieldColor; 

ma devo cambiare il colore del bordo UITextField troppo. E la mia domanda riguardava come cambiare il colore del bordo.

risposta

19

Prova questo:

UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)]; 
    theTextFiels.borderStyle=UITextBorderStyleNone; 
    theTextFiels.layer.cornerRadius=8.0f; 
    theTextFiels.layer.masksToBounds=YES; 
     theTextFiels.backgroundColor=[UIColor redColor]; 
    theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor]; 
    theTextFiels.layer.borderWidth= 1.0f; 

    [self.view addSubview:theTextFiels]; 
    [theTextFiels release]; 

e l'importazione QuartzCore:

#import <QuartzCore/QuartzCore.h> 
254

Importa QuartzCore quadro in te classe:

#import <QuartzCore/QuartzCore.h> 

e per modificare il colore del bordo utilizzare il seguente frammento di codice (Lo sto impostando su redColor),

textField.layer.cornerRadius=8.0f; 
    textField.layer.masksToBounds=YES; 
    textField.layer.borderColor=[[UIColor redColor]CGColor]; 
    textField.layer.borderWidth= 1.0f; 

Per ritornare alla layout originale è sufficiente impostare il colore del bordo per eliminare il colore,

serverField.layer.borderColor=[[UIColor clearColor]CGColor]; 

nel Codice SWIFT

textField.layer.borderWidth = 1 
    textField.layer.borderColor = UIColor.whiteColor().CGColor 
+3

E ' #import invece di QuartCore (hai dimenticato la z) – cldrr

+49

In iOS 7 devi impostare una larghezza del bordo o il colore non ha effetto. – Micah

+1

Come principiante non ha senso per me. Se avvio un'app vuota, vai allo storyboard e aggiungi un campo TextView. Dove posso importare il quartzcore? Dove posso aggiungere le informazioni su borderwidth sopra? Che cos'è "textField" e come fa a sapere di quale campo di testo sto parlando? –

16

Importare la seguente classe:

#import <QuartzCore/QuartzCore.h> 

// Codice per l'impostazione del colore grigio per il bordo del campo di testo

[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 
                green:171.0/255.0 
                blue:171.0/255.0 
                alpha:1.0] CGColor]]; 

Sostituire 171.0 con il rispettivo numero di colore come richiesto.

+5

- questo non funziona su iOS7. –

+0

Anche in IOS 9 non funziona. –

10

Per semplificare questa azioni da risposta accettata, è anche possibile creare Categoria per UIView (dal momento che questo funziona per tutte le sottoclassi di UIView, non solo per i campi di testo:

UIView + Additions.h:

#import <Foundation/Foundation.h> 

@interface UIView (Additions) 
- (void)setBorderForColor:(UIColor *)color 
        width:(float)width 
        radius:(float)radius; 
@end 

UIView + Additions.m:

#import "UIView+Additions.h" 

@implementation UIView (Additions) 

- (void)setBorderForColor:(UIColor *)color 
        width:(float)width 
        radius:(float)radius 
{ 
    self.layer.cornerRadius = radius; 
    self.layer.masksToBounds = YES; 
    self.layer.borderColor = [color CGColor]; 
    self.layer.borderWidth = width; 
} 

@end 

Usage:

#import "UIView+Additions.h" 
//... 
[textField setBorderForColor:[UIColor redColor] 
         width:1.0f 
         radius:8.0f]; 
11

questa domanda si presenta piuttosto alto su una ricerca su Google e ha lavorato per la maggior parte! Ho trovato che la risposta di Salman Zaidi era parzialmente corretta per iOS 7.

È necessario apportare una modifica al codice di "ripristino".Ho trovato che i seguenti per un ritorno ha funzionato perfettamente:

textField.layer.cornerRadius = 0.0f; 
textField.layer.masksToBounds = YES; 
textField.layer.borderColor = [[UIColor blackColor] CGColor]; 
textField.layer.borderWidth = 0.0f; 

Capisco che questo è più probabile a causa di cambiamenti in iOS 7.

4

borderColor in ogni caso (o UIView sottoclasse) potrebbe anche essere impostato utilizzando lo storyboard con un po 'di codifica e questo approccio potrebbe essere davvero utile se stai impostando il colore del bordo su più oggetti dell'interfaccia utente.

Qui di seguito sono i passi come raggiungerlo,

  1. creare una categoria sulla classe di CALayer. Dichiarare una proprietà di tipo UIColor con un nome appropriato, lo chiamerò come borderUIColor.
  2. Scrivi il setter e il getter per questa proprietà.
  3. Nel metodo "Setter" è sufficiente impostare la proprietà "borderColor" del layer sul nuovo valore CGColor dei colori.
  4. Nel metodo 'Getter' restituisce UIColor con borderColor di livello.

P.S: ricordare che le categorie non possono avere proprietà memorizzate. 'borderUIColor' viene utilizzato come proprietà calcolata, proprio come riferimento per ottenere ciò su cui ci stiamo concentrando.

Si prega di dare un'occhiata al seguente codice di esempio;

Objective C:

Interface File:

#import <QuartzCore/QuartzCore.h> 
#import <UIKit/UIKit.h> 

@interface CALayer (BorderProperties) 

// This assigns a CGColor to borderColor. 
@property (nonatomic, assign) UIColor* borderUIColor; 

@end 

Attuazione File:

#import "CALayer+BorderProperties.h" 

@implementation CALayer (BorderProperties) 

- (void)setBorderUIColor:(UIColor *)color { 
    self.borderColor = color.CGColor; 
} 

- (UIColor *)borderUIColor { 
    return [UIColor colorWithCGColor:self.borderColor]; 
} 

@end 

Swift 2.0:

extension CALayer { 
var borderUIColor: UIColor { 
    set { 
     self.borderColor = newValue.CGColor 
    } 

    get { 
     return UIColor(CGColor: self.borderColor!) 
    } 
} 
} 

E infine andare al tuo storyboard/XIB, seguire i passaggi rimanenti;

  1. Fare clic sull'oggetto Visualizza per il quale si desidera impostare Colore bordo.
  2. Fare clic su "Identity Inspector" (3 ° da sinistra) nel pannello "Utility" (lato destro dello schermo).
  3. In "Attributi runtime definiti dall'utente", fare clic sul pulsante "+" per aggiungere un percorso chiave.
  4. Impostare il tipo di percorso chiave su "Colore".
  5. Immettere il valore per il percorso chiave come "layer.borderUIColor". [Ricorda che questo dovrebbe essere il nome della variabile che hai dichiarato nella categoria, non borderColor qui è borderUIColor].
  6. Infine, scegli il colore che desideri.

Hai per impostare layer.borderWidth valore della proprietà per almeno 1 per vedere il colore del bordo.

Build and Run. Happy Coding. :)

+0

Si prega di non pubblicare risposte identiche a più domande. Pubblica una buona risposta, quindi vota/contrassegna per chiudere le altre domande come duplicati. Se la domanda non è un duplicato, aggiungi le tue risposte alla domanda. – josliber

1

Se si utilizza un TextField con angoli arrotondati di questo codice:

self.TextField.layer.cornerRadius=8.0f; 
    self.TextField.layer.masksToBounds=YES; 
    self.TextField.layer.borderColor=[[UIColor redColor]CGColor]; 
    self.TextField.layer.borderWidth= 1.0f; 

per rimuovere il bordo:

self.TextField.layer.masksToBounds=NO; 
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];