Qual è il modo migliore per impostare le coordinate x, y di UILabel ma lasciarlo auto larghezza / altezza su iPhone?
-
06-09-2019 - |
Domanda
So esattamente dove voglio posizionare la mia UILabel in un UIView, ma io non so che cosa necessariamente altezza / larghezza voglio che abbia al momento della compilazione, quindi l'impostazione di larghezza / altezza in initWithFrame è inutile. Voglio essere in grado di appena init suo punto x, y, e quindi usare qualcosa come [myLabel sizeToFit] in modo che possa automagicamente impostare la larghezza / altezza in base alla mia modalità di pausa e di contenuti.
La soluzione che sto cercando è come impostare il punto di origine del UILabel durante l'impostazione è la larghezza / altezza per un numero dinamica basata sul testo riportato all'etichetta.
Nessuna soluzione corretta
Altri suggerimenti
Taglia l'etichetta prima, quindi impostare la sua origine o il centro:
[myLabel sizeToFit];
CGRect frame = myLabel.frame;
frame.origin = CGPointMake(x, y);
myLabel.frame = frame;
o
[myLabel sizeToFit];
myLabel.center = CGPointMake(x, y);
Se hai già il telaio con la dimensione dinamica, ma desidera modificare l'origine:
CGRect myFrame = myLabel.frame;
myFrame.origin = aCGPoint;
myLabel.frame = myFrame;
Se è necessario calcolare la dimensione:
CGSize suggestedSize = [myString sizeWithFont:myLabel.font constrainedToSize:CGSizeMake(FLT_MAX, FLT_MAX) lineBreakMode:UILineBreakModeWordWrap];
Naturalmente, è possibile modificare la FLT_MAX per vincolare ad una larghezza o altezza specifica.
EDIT: Non mi rendevo conto che si voleva calcolare programatically le dimensioni. Aggiunta una spiegazione migliore qui sopra.