Ho un cerchio al centro di uno schermo con un limite di margine di 50
su entrambe le estremità. Quindi, la larghezza del cerchio dipende dalla dimensione dello schermo.Ottieni altezza di visualizzazione in base ai vincoli di margine dopo l'esecuzione Swift
Quindi, quello che ho provato è stato questo:
Approccio 1
ho creato i margini nello storyboard per definire la larghezza cerchio (50
sulla sinistra e destra)
Poi ho utilizzato il seguente codice:
@IBOutlet weak var helpButHeight: NSLayoutConstraint!
@IBOutlet weak var helpBut: UIButton!
viewDidLoad:
012.helpButHeight.constant = helpBut.frame.size.width
Questo non ha funzionato.
Dal momento che la larghezza dello schermo è 400
, e il margine è 50
su entrambe le estremità, quindi helpBut.frame.size.width
dovrebbe mi hanno dato 300
.
Invece mi ha dato 46
.
Approccio 2
Questa era la mia work-around:
viewDidLoad:
let screenSize: CGRect = UIScreen.mainScreen().bounds
helpButHeight.constant = screenSize.width - 100
perchè 100 = 50 + 50
, i due margini.
Funziona bene!
Domanda
Perché ho dovuto fare questo? Perché il primo approccio non ha funzionato? Perché 46
e non 300
?
Stai facendo questo 'helpButHeight.constant = helpBut.frame.size.width' nel tuo' viewDidLoad'? –
sì, mi dispiace, lo renderò chiaro –
Cosa non hai appena impostato Aspect Ration su 1: 1 e poi hai impostato i vincoli iniziali e finali a 50, e puoi centrarlo verticalmente? – EridB