2016-03-16 40 views
6

Sto cercando di fare un UILabel a Swift un cerchio perfetto, Attualmente sto usando il seguente:Come rendere UILabel a Swift un cerchio

pResult.layer.masksToBounds = true 
     pResult.layer.cornerRadius = 125 

Il problema di questo è che funziona bene su 6s Più ma qualsiasi altra dimensione è ovviamente una forma diversa: qual è il modo migliore per farlo?

risposta

16

angoli cerchiati o un cerchio completo? Ad ogni modo, supponendo che si desideri la seconda opzione, è necessario limitare le proporzioni (larghezza: altezza) a 1: 1 sullo storyboard in modo che l'etichetta sia sempre un quadrato. Poi, nel codice, si può semplicemente fare qualcosa di simile

pResult.layer.cornerRadius = pResult.frame.width/2 

di fare sempre un cerchio perfetto, indipendentemente dalle dimensioni dello schermo sarà in.

+0

vorrei andare per il calcolo del raggio d'angolo: lasciare raggio = min (yourButton.frame. size.width, yourButton.frame.size.height)/2.0 –

+0

Si otterrà solo un rect arrotondato se l'etichetta stessa non ha dimensioni adeguate, ma è il modo migliore per farlo se lo desidera, sì – FruitAddict

+0

Grazie per l'aiuto quello ha funzionato perfettamente – AppleTattooGuy

7

Se si desidera realizzare un cerchio perfetto, assicurarsi innanzitutto che la larghezza e l'altezza dell'etichetta siano uguali.

pResult.layer.cornerRadius = CGRectGetWidth(pResult.frame)/2 
pResult.layer.masksToBounds = true 
0
//You can provide UserdefiendRunTimeConstraints on the Label using Storyboard or XIB Select label and give 

(Es. Il vostro Label Width = 100 & Altezza = 100)

KeyPath =layer.cornerRadius 
Type = Number 
Value = 50 

KeyPath = layer.masksToBounds 
Type = Boolean 
Value = True 

KeyPath = layer.borderWidth 
Type = Number 
Value = 2 
0

dipenderà dalla soluzione di @FruitAddict, mi piacerebbe migliorarlo più perfetta. Si dovrebbe usare la proprietà .height invece .width causa nel caso in cui la lunghezza dell'etichetta sia più lunga (il testo aumenta) questo codice non funzionerà. E il codice sarà simile a questo:

pResult.layer.cornerRadius = pResult.frame.height/2 
2

Se si utilizza veloce 3 quindi si prega di provare questo:

lblRoundDot.layer.cornerRadius = lblRoundDot.frame.width/2 
lblRoundDot.layer.masksToBounds = true 
Problemi correlati