2016-01-31 22 views
8

Desidero aumentare la diffusione di un'ombra nella mia UILabel ma non riesco a trovare la proprietà per farlo. Ho aggiunto una foto qui sotto per illustrare il problema.iOS - Shadow spread su UILabel

An example of the desired label shadow, and the current one.

La parte superiore Label è l'effetto desiderato sono in grado di creare in Photoshop. L'etichetta in basso illustra le proprietà che sono riuscito a trovare su iOS. Ecco il codice che ho usato per l'etichetta in basso.

let bottomLabel = UILabel(frame: CGRectMake(0, 0, maxWidth, 18)) 
bottomLabel.backgroundColor = UIColor.clearColor() 
bottomLabel.textColor = UIColor.whiteColor() 
bottomLabel.font = UIFont.boldSystemFontOfSize(16) 
bottomLabel.text = title 
bottomLabel.textAlignment = .Center 
bottomLabel.numberOfLines = 1 
bottomLabel.layer.shadowOffset = CGSize(width: 0, height: 0) 
bottomLabel.layer.shadowOpacity = 1 
bottomLabel.layer.shadowRadius = 2 

Ho trovato un suggerimento per utilizzare una seconda etichetta come un'ombra, ma questo non ha dato il risultato desiderato. Ecco il codice per quell'etichetta.

let bottomLabelShadow = UILabel(frame: CGRectMake(0, 1, maxWidth, 18)) 
bottomLabelShadow.backgroundColor = UIColor.clearColor() 
bottomLabelShadow.textColor = UIColor.blackColor() 
bottomLabelShadow.font = UIFont.boldSystemFontOfSize(16) 
bottomLabelShadow.text = title 
bottomLabelShadow.textAlignment = .Center 
bottomLabelShadow.numberOfLines = 1 
bottomLabelShadow.layer.shadowOffset = CGSize(width: 0, height: 0) 
bottomLabelShadow.layer.shadowOpacity = 1 
bottomLabelShadow.layer.shadowRadius = 2 
+0

in realtà c'è un buon articolo su ombre https://makeapppie.com/2015/05/19/swift-swift-how-to-make-a-drop-shadow-in-user-interfaces/ –

risposta

22

Sembra funzionare per me in un parco giochi. Hai solo bisogno di aumentare il raggio di ombra per farlo apparire come lo desideri.

Questo è il codice esatto parco giochi che ho usato

let view = UIView(frame: CGRectMake(0,0,100,20)) 
view.backgroundColor = UIColor.yellowColor() 

let bottomLabel = UILabel(frame: CGRectMake(0, 0, 100, 20)) 
bottomLabel.backgroundColor = UIColor.clearColor() 
bottomLabel.textColor = UIColor.whiteColor() 
bottomLabel.font = UIFont.boldSystemFontOfSize(18) 
bottomLabel.text = "Testing" 
bottomLabel.textAlignment = .Center 
bottomLabel.numberOfLines = 1 
bottomLabel.layer.shadowOffset = CGSize(width: 0, height: 0) 
bottomLabel.layer.shadowOpacity = 1 
bottomLabel.layer.shadowRadius = 6 

view.addSubview(bottomLabel) 

Oppure, se lo si utilizza su uno sfondo vista sfocatura, si potrebbe usare vivacità per ottenere un effetto più bello.

enter image description here

+0

Darnit, mi hai battuto. LOL. Stavo cercando di capire come usare i campi da gioco dopo averlo usato per così tanto tempo ... – DeveloperACE

+0

Grazie per la risposta veloce! Ho esaminato ma non è il risultato che sto cercando. Ho aggiornato l'immagine per adattarla meglio al tuo esempio di Playground. –

+0

grazie per questo! – CaffeineShots

1

risposta di Rikola come Swift 3:

import UIKit 

let view = UIView(frame: CGRect.init(x: 0, y: 0, width: 100, height: 20)) 
view.backgroundColor = UIColor.yellow 

let bottomLabel = UILabel(frame: CGRect.init(x: 0, y: 0, width: 100, height: 20)) 
bottomLabel.backgroundColor = UIColor.clear 
bottomLabel.textColor = UIColor.white 
bottomLabel.font = UIFont.boldSystemFont(ofSize: 18) 
bottomLabel.text = "Testing" 
bottomLabel.textAlignment = .center 
bottomLabel.numberOfLines = 1 
bottomLabel.layer.shadowOffset = CGSize(width: 0, height: 0) 
bottomLabel.layer.shadowOpacity = 1 
bottomLabel.layer.shadowRadius = 6 

view.addSubview(bottomLabel) 

Premere il piccolo "occhio", quando l'aspirapolvere sul view.addSubview(bottomLabel) stampa nella barra di destra, per una rappresentazione visiva del marchio.

4
//Try This! Hope this helps!! 

// Create a string 
let myString = "Shadow" 

// Create a shadow 
let myShadow = NSShadow() 
myShadow.shadowBlurRadius = 3 
myShadow.shadowOffset = CGSize(width: 3, height: 3) 
myShadow.shadowColor = UIColor.gray 

// Create an attribute from the shadow 
let myAttribute = [ NSShadowAttributeName: myShadow ] 

// Add the attribute to the string 
let myAttrString = NSAttributedString(string: myString, attributes: myAttribute) 

// set the attributed text on a label 
myLabel.attributedText = myAttrString