2010-04-16 21 views
5

Devo disegnare il testo sottolineato su più righe con tutti i tipi di allineamento del testo. Ho cercato su forum e ottenuto alcuni risultati come:Disegna il testo sottolineato/barrato (MULTILINE STRING)?

http://davidjhinson.wordpress.com/2009/11/26/underline-text-on-the-iphone/

http://forums.macrumors.com/showthread.php?t=561572

Ma tutto disegnare il testo solo per singola linea. mentre ho il testo su più righe. La situazione peggiora anche quando l'allineamento del testo è centrato. Ho cercato e trovato che in iphone-sdk-3.2 ci sono alcuni attributi del core-text per sottolineare un testo ma non ho idea di come usarlo. Inoltre se uso questi il ​​mio problema non sarebbe risolto completamente.

Come devo disegnare testo barrato anche.

Chiunque abbia idea di questo, per favore aiuto.

risposta

2

Che dire di questo. Funziona bene per me cosa ne pensate tutti, se questo richiede qualche ottimizzazione?

CGContextSetFillColorWithColor(c, [[UIColor blackColor] CGColor]);   //THE TEXT COLOR OF THE STRING TO BE DRAWN. 

      UIFont *fontName = [UIFont fontWithStyle:@"Arial-BoldMT" andFontSize:13]; 

      if(FontOverLayUnderLine || FontOverLayStrikeThrough){ 

       NSArray *stringsArray = [textString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
       CGContextSetStrokeColorWithColor(c, [appDel.textDisplayStyle.fillColor CGColor]); 
       CGContextSetLineWidth(c, 1.0); 
       CGSize stringSize; 
       NSString *stringToDraw; 
       for (int i = 0 ; i < [stringsArray count]; i++) { 

        stringToDraw = [stringsArray objectAtIndex:i]; 

        if(![[stringToDraw stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]){ 

         stringSize = [stringToDraw sizeWithFont:fontName forWidth:rect.size.width lineBreakMode:UILineBreakModeCharacterWrap]; 

         float x = rect.origin.x + (rect.size.width-stringSize.width)/2 + 7; 
         float y = 4 + stringSize.height*i; 

         [stringToDraw drawAtPoint:CGPointMake(x, y) forWidth:stringSize.width withFont:fontName lineBreakMode:UILineBreakModeCharacterWrap]; 

         if(FontOverLayUnderLine) 
          y += (1.05) * stringSize.height*i +1; 
         else 
          y += (stringSize.height/2)+1; 

         CGContextMoveToPoint(c, x, y); 
         CGContextAddLineToPoint(c, x+stringSize.width, y); 
         CGContextStrokePath(c); 
        } 
       } 

      } 

Spero che questo funzioni per tutti.

Grazie,

Madhup

+0

Hi Madhup, questo non funziona per me. Per favore, puoi aiutarmi con la sottolineatura di testo multilinea in un UILabel. Sarebbe fantastico se tu potessi farlo. –

+0

Cosa si può fare? Per favore aiutami con questo. –

+0

@Parth \ Bhatt il codice sopra riportato è per testo struckthrough. Dovresti provare a cambiare un po 'il frame of line per ottenere il testo sottolineato. Si prega di vedere il primo link nella mia domanda stessa. –

1

Utilizzare il testo principale.

Ho cercato e trovato che nel iphone-sdk-3.2 ci sono alcuni attributi di base-text per sottolineare un testo, ma non sa come utilizzare tale.

Questo è ciò che è the documentation.