2010-10-22 15 views
8

È facile visualizzare una singola etichetta con lo stesso testo ma cosa succede quando si desidera visualizzare una parola in grassetto?Come puoi mettere in grassetto una sola parola in un UILabel?

Esempio:

tutte le vostre basi sono ci appartengono.

+0

penso che questo sia quello che stai cercando http://stackoverflow.com/questions/3586871/bold-non-bold-text-in-a-single-uilabel – Abhigyan

risposta

7

UILabel non è in grado di disegnare un'etichetta con attributi/caratteri diversi all'interno del testo. Ma il testo principale può. È possibile creare una sottoclasse di UILabel che avvolge una stringa attribuita e utilizza Core Text per disegnarla. È possibile gestire il disegno come nella this sample code dalla guida di programmazione Core Text:

// Build up your attributed string, then... 
CTLineRef line = CTLineCreateWithAttributedString(attrString); 

// Set text position and draw the line into the graphics context 
CGContextSetTextPosition(context, 10.0, 10.0); 
CTLineDraw(line, context); 
CFRelease(line); 
1

Sfortunatamente, questo non è attualmente possibile. Potresti, comunque, sottoclasse UILabel e includi questa funzionalità.

Un'altra possibilità sarebbe utilizzare un UIWebView, ma ciò richiede l'utilizzo di tag HTML e il metodo loadHTML :.

1

Come ha scritto Evan Mulawski, UILabel non otterrà ciò che vuoi. Del resto, né UITextField né UITextView.

Un altro approccio sarebbe quello di sottoclasse UIView e scrivere a -drawRect: metodo che fa ciò che vuoi. Si potrebbe guardare

  • CGContextShowTextAtPoint
  • [NSString drawAtPoint: withFont:]
  • [NSString sizeWithFont:]

Se non sarà richiedono un sacco di interruzioni di linea e confezionamento, allora potresti probabilmente creare qualcosa abbastanza facilmente.

UIWebView sarebbe probabilmente più veloce ma sembra un sacco di spese generali per qualcosa di semplice come un'etichetta in stile.

Problemi correlati