2015-10-15 12 views
9

Ho creato un file .xib con UISearchBar.Rimuovi il bordo superiore e inferiore di UISearchBar e dell'ombra?

Sto cercando di rimuovere i bordi superiore e inferiore come si vede in questa immagine: image

C'è anche quella che appare come un'ombra sotto il bordo superiore.

Ho provato a cambiare gli sfondi/colori della tinta ecc., Ma ho faticato a farlo scomparire.

Qualsiasi aiuto sarebbe gradito, qualche idea?

EDIT

Così il codice qui sotto mi permette di sbarazzarsi del bordo in alto e in basso, ma non la strana ombra. Ho aggiunto uno sfondo verde per mostrarlo in modo più chiaro.

See

Inoltre, quale sarebbe il modo migliore per aggiungere un bordo intorno alla casella di testo (piuttosto che la vista) ?? Grazie

// ** Questo è quello che sto cercando di fare: https://stackoverflow.com/questions/33107058/uiviewcontroller-sizing-as-maincontroller-within-uisplitviewcontroller

e qui è il codice che sto usando.

import UIKit 

class TopSearchViewController: UIView { 

    var expanded: Int = 0 

    @IBOutlet weak var trailingConstraint: NSLayoutConstraint! 
    @IBOutlet var contentView: UIView! 
    @IBOutlet weak var searchBar: UISearchBar! 

    @IBAction func advancedSearchButton(sender: AnyObject) { 
     if expanded == 0 { 
      self.layoutIfNeeded() 
      UIView.animateWithDuration(0.1, animations: { 
       self.trailingConstraint.constant = 200 
       self.layoutIfNeeded() 
      }) 
      expanded = 1 
     } else { 
      self.layoutIfNeeded() 
      UIView.animateWithDuration(0.1, animations: { 
       self.trailingConstraint.constant = 25 
       self.layoutIfNeeded() 
      }) 
      expanded = 0 
     } 
    } 

    override init(frame: CGRect) { // for using CustomView in code 
     super.init(frame: frame) 
     self.commonInit() 
    } 

    required init(coder aDecoder: NSCoder) { // for using CustomView in IB 
     super.init(coder: aDecoder) 
     self.commonInit() 
    } 

    private func commonInit() { 
     NSBundle.mainBundle().loadNibNamed("TopSearchViewController", owner: self, options: nil) 

     contentView.frame = self.bounds 
     contentView.autoresizingMask = .FlexibleHeight | .FlexibleWidth 

     self.addSubview(contentView) 

     self.searchBar.layer.borderWidth = 1 
     self.searchBar.layer.borderColor = UIColor.whiteColor().CGColor 

     println(searchBar) 

     for subview in searchBar.subviews { 
      println("hello") 

      var textField : UITextField 

      if (subview.isKindOfClass(UITextField)) { 
       textField = subview as! UITextField 
       textField.borderStyle = .None 
       textField.layer.borderWidth = 1 
       textField.layer.borderColor = UIColor.lightGrayColor().CGColor 
       textField.layer.cornerRadius = 14 
       textField.background = nil; 
       textField.backgroundColor = UIColor.whiteColor() 
      } 
     } 

    } 

    func viewDidLoad() { 

    } 
} 

risposta

4

Prova questa:

searchBar.layer.borderWidth = 1 
searchBar.layer.borderColor = UIColor.whiteColor().CGColor 

EDIT:

Credo che l'ombra è causata da interno UITextField. Prova con il codice qui sotto:

var textField : UITextField 

for subview in searchBar.subviews { 
    if (subview.isKindOfClass(UITextField)) { 
     textField = subview as! UITextField 
     textField.borderStyle = .None 
     textField.layer.borderWidth = 1 
     textField.layer.borderColor = UIColor.lightGrayColor().CGColor 
     textField.layer.cornerRadius = 14 
     textField.background = nil; 
     textField.backgroundColor = UIColor.whiteColor() 
    } 
} 
+0

Quindi l'ho provato in viewDidLoad, ma dopo averlo inserito altrove, ora funziona. Tuttavia, questo elimina solo la linea sopra e sotto, e non il colore della tinta strana. (So ​​che è legato alla tinta perché scompare se lo cambio in bianco) –

+0

Si prega di dare un'occhiata al mio post modificato. Penso di aver risposto alla tua domanda iniziale e questa dovrebbe essere la risposta accettata. – Abhinav

+0

Questo non sembra funzionare per me. Si prega di consultare il mio codice aggiornato. –

27

Impostare del backgroundImage bar per un vuotoUIImage, nonnil:

searchBar.backgroundImage = UIImage() 

Si può anche impostare la barTintColor, come specificato nel vostro commento qui sotto.

+0

Superbo :) Buona idea :) tq –

+0

Questo non ha funzionato per me, come il barTintColor non prende dopo aver impostato lo sfondoImmagine di un UIImage vuoto –

+1

@GregHilston, ma non è quello che la domanda di OP era. Se stai cercando di avere una barra colorata leggermente traslucida, devi impostare 'backgroundImage' su una' UIImage' non vuota che hai creato a livello di programmazione e che si imposta come il colore desiderato. (Non è possibile impostare il colore di un'immagine in Interface Builder.) – NRitH

3

Ho provato tutte le risposte, ma non hanno rimosso l'ombra interna 1px dell'UITextfield di UISearchBar all'interno.

Ho risolto questo problema aumentando la larghezza del bordo bianco. Si sovrappone all'ombra.

searchBar.layer.borderWidth = 10 
searchBar.layer.borderColor = UIColor.white.cgColor 
Problemi correlati