Sto provando a rielaborare il testo in un UILabel per lasciare un margine attorno al testo che mostra il colore di sfondo. Seguendo il suggerimento here ho sovrascritto textRectForBounds:limitedToNumberOfLines:
in questo modo:UILabel textRectForBounds non ha effetto quando si tenta di creare un margine
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect intermediate = CGRectMake(bounds.origin.x+MARGIN,bounds.origin.y+MARGIN,bounds.size.width-2*MARGIN,bounds.size.height-2*MARGIN);
return [super textRectForBounds:intermediate limitedToNumberOfLines:numberOfLines];
}
Ma non importa quello che faccio, il testo finisce stretto contro il bordo sinistro del rettangolo. Sembra che il disegno ignori la parte di origine del CGRect restituito (anche se sembra che rispetti la parte della larghezza, come se riducessi alla larghezza dell'intermedio ad esempio bounds.size.width-200
il rect che textRectForBounds restituisce sia opportunamente stretto e il testo sia disegnato in una colonna lunga e magra).
Quindi: cos'altro devo fare per il UILabel
per fare in modo che il disegno rispetti l'origine textForRectBounds
-returned-rect.x e origin.y? Preferisco non ignorare lo UILabel
drawTextInRect
se posso aiutarlo.
Aggiornamento: Questo è stato molto tempo fa e non ricordo esattamente perché l'altra domanda non ha funzionato per me. Credo che fosse perché stavo cercando di avere uno UILabel
con più linee, e la soluzione here non ha funzionato in quel caso.
Hai provato a restituire 'intermediate' direttamente? –
sì, ma non fa differenza. – damian