2010-04-16 3 views
5

Мне нужно нарисовать подчеркнутый-многострочный текст со всеми типами выравнивания текста. Я искал на форумах и получили некоторые результаты, как:Нарисуйте подчеркнутый/зачеркнутый текст (MULTILINE STRING)?

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

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

Но рисовать текст только одной строки. в то время как у меня есть многострочный текст. Ситуация даже ухудшается, когда выравнивание текста сосредоточено. Я искал и обнаружил, что в iphone-sdk-3.2 есть некоторые основные текстовые атрибуты для подчеркивания текста, но не знаю, как это использовать. Кроме того, если я буду использовать их, моя проблема не будет решена полностью.

Как я должен нарисовать зачеркнутый текст также.

Любой, у кого есть идея об этом, пожалуйста, помогите.

ответ

2

Как насчет этого. Это хорошо работает для меня, что вы все думаете, если это требует некоторой оптимизации?

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); 
        } 
       } 

      } 

Надеюсь, что это хорошо работает для всех.

Спасибо,

Madhup

+0

Привет Madhup, это не работает для меня. Пожалуйста, пожалуйста, помогите мне с подчеркиванием многострочного текста в UILabel. Было бы здорово, если бы вы это сделали. –

+0

Что можно сделать? Пожалуйста, помогите мне с этим. –

+0

@Parth \ Bhatt приведенный выше код предназначен для прорыва текста. Вы должны попытаться немного изменить рамку линии, чтобы получить подчеркнутый текст. Посмотрите первую ссылку в моем вопросе. –

1

Использование основного текста.

Я искал и обнаружил, что в iphone-sdk-3.2 есть некоторые основные текстовые атрибуты для подчеркивания текста, но не знаю, как это использовать.

Это то, что the documentation для.