2010-04-16 80 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中的多行文字加下劃線。如果你能這樣做,那將是非常棒的。 – 2011-09-09 05:31:55

+0

可以做些什麼?請幫助我這個。 – 2011-09-09 05:33:48

+0

@Parth \ Bhatt上面的代碼是針對穿透文本的。你應該嘗試改變一行的框架以獲得帶下劃線的文字。請參閱我的問題本身的第一個鏈接。 – 2011-09-09 07:12:39

1

使用核心文本。

我搜索並發現,在iphone-sdk-3.2中有一些核心文本屬性用於強調文本,但不知道如何使用它。

這就是the documentation的用途。