2010-04-16 14 views
5

मुझे सभी प्रकार के टेक्स्ट संरेखण के साथ रेखांकित-मल्टीलाइन टेक्स्ट आकर्षित करना है। मैं मंचों पर खोज की है और जैसे कुछ परिणाम मिल गया है:रेखांकित/स्ट्राइकथ्रू टेक्स्ट (बहुलाइन 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); 
        } 
       } 

      } 

आशा है कि यह सभी के लिए अच्छा काम करेगा।

धन्यवाद,

मधुप

+0

हाय मधुप, मेरे लिए यह काम नहीं करता है। कृपया आप UILabel में मल्टीलाइन टेक्स्ट अंडरलाइन के साथ मेरी मदद कर सकते हैं। यदि आप ऐसा कर सकते हैं तो यह बहुत अच्छा होगा। –

+0

क्या किया जा सकता है? कृपया इस के साथ मेरी मदद करें। –

+0

@Parth \ Bhatt उपरोक्त कोड हिटथ्रू टेक्स्ट के लिए है। आपको रेखांकित पाठ प्राप्त करने के लिए लाइन के फ्रेम को थोड़ा सा बदलने की कोशिश करनी चाहिए। कृपया मेरे प्रश्न में पहला लिंक देखें। –

1

कोर टेक्स्ट का उपयोग करें।

मैंने खोज की और पाया कि आईफोन-एसडीके-3.2 में टेक्स्ट को रेखांकित करने के लिए कुछ कोर-टेक्स्ट विशेषताएँ हैं लेकिन इसका उपयोग नहीं करना है।

यही the documentation है।

संबंधित मुद्दे