Domanda

Devo disegnare testo multilinea sottolineato con tutti i tipi di allineamento del testo.Ho cercato sui forum e ho ottenuto alcuni risultati come:

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

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

Ma tutti disegnano il testo solo per una singola riga.mentre ho un testo su più righe.La situazione peggiora ulteriormente quando l'allineamento del testo è centrato.Ho cercato e scoperto che in iphone-sdk-3.2 ci sono alcuni attributi di testo fondamentali per sottolineare un testo ma non ho idea di come usarli.Inoltre se li utilizzo il mio problema non sarebbe risolto completamente.

Poiché devo disegnare anche il testo barrato.

Qualcuno che ha un'idea al riguardo, per favore aiutami.

È stato utile?

Soluzione

Che dire di questo.Questo funziona bene per me, cosa ne pensate, se necessita di 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 funzioni bene per tutti.

Grazie,

Madhup

Altri suggerimenti

Utilizza il testo principale.

Ho cercato e scoperto che in iphone-sdk-3.2 ci sono alcuni attributi di testo fondamentali per sottolineare un testo ma non ho idea di come usarli.

Questo è ciò che la documentazione è per.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top