2015-02-13 13 views
10

Come si può rendere un bordo UIButton simile allo schermo sottostante (il pulsante "Guida introduttiva") con uno sfondo trasparente?Bordo del pulsante con sfondo trasparente in Swift

Come si può ottenere ciò utilizzando lo storyboard o come farlo a livello di programmazione?

enter image description here

+2

Hai provato qualcosa? Cosa hai provato? Cosa non ha funzionato? –

risposta

27

Impostazione backgroundColor a clearColor rende il pulsante trasparente.
Prova ad esempio il codice qui sotto. Puoi configurare e variare il borderAlpha, cornerRadius e i colori come vuoi.

let borderAlpha : CGFloat = 0.7 
let cornerRadius : CGFloat = 5.0 

button.frame = CGRectMake(100, 100, 200, 40) 
button.setTitle("Get Started", forState: UIControlState.Normal) 
button.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal) 
button.backgroundColor = UIColor.clearColor() 
button.layer.borderWidth = 1.0 
button.layer.borderColor = UIColor(white: 1.0, alpha: borderAlpha).CGColor 
button.layer.cornerRadius = cornerRadius 
3

utilizzando Extension:

extension UIButton 
{ 
func setUpLayer(sampleButton: UIButton?) { 
    sampleButton!.setTitle("GET STARTED", forState: UIControlState.Normal) 
    sampleButton?.tintColor = UIColor.whiteColor() 
    sampleButton!.frame = CGRect(x:50, y:500, width:170, height:40) 
    sampleButton!.layer.borderWidth = 1.0 
    sampleButton!.layer.borderColor = UIColor.whiteColor().colorWithAlphaComponent(0.5).CGColor 
    sampleButton!.layer.cornerRadius = 5.0 

    sampleButton!.layer.shadowRadius = 3.0 
    sampleButton!.layer.shadowColor = UIColor.whiteColor().CGColor 
    sampleButton!.layer.shadowOpacity = 0.3 
} 

} 

Usage:

let sampleUIButton = UIButton() 
    sampleUIButton.setUpLayer(sampleUIButton) 
    self.view.addSubview(sampleUIButton) 
1

Utilizzando Swift 3, per Storyboard, basta aggiungere questa sottoclasse al progetto, poi in Impostazioni Identità, fare questa è la classe per UIButton sul tuo storyboard. Dovresti quindi essere in grado di regolare il colore e la larghezza del boarder.

@IBDesignable class CustomButton: UIButton { 

@IBInspectable var borderColor: UIColor = UIColor.white { 
    didSet { 
     layer.borderColor = borderColor.cgColor 
    } 
} 

@IBInspectable var borderWidth: CGFloat = 2.0 { 
    didSet { 
     layer.borderWidth = borderWidth 
    } 
} 

override public func layoutSubviews() { 
    super.layoutSubviews() 
    clipsToBounds = true 
} 
}