2012-05-14 4 views
10

सिद्धांत रूप में, इन ही आकार होना चाहिए, लेकिन वे नहीं कर रहे हैं:कोर टेक्स्ट एनएसएसटींग ड्राइरेक्ट से थोड़ा छोटा है :?

नीले रंग में पाठ कोर पाठ से है, काले रंग में -[NSString drawInRect:] से है। यहां कोड है:

//Some formatting to get the correct frame 
int y = MESSAGE_FRAME.origin.y + 8; 

    if (month) y = y + 27; 

    int height = [JHomeViewCellContentView heightOfMessage:self.entry.message]; 

    CGRect rect = CGRectMake(MESSAGE_FRAME.origin.x + 8, y, MESSAGE_FRAME.size.width - 16, height); 


    //Draw in rect method 
    UIFont *font = [UIFont fontWithName:@"Crimson" size:15.0f]; 

    [[UIColor colorWithWhite:0.2 alpha:1.0] setFill]; 

    [self.entry.message drawInRect:rect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft]; 



    //Frame change to suit CoreText 
    CGRect rect2 = CGRectMake(MESSAGE_FRAME.origin.x + 8, self.bounds.size.height - y - height, MESSAGE_FRAME.size.width - 16, height); 

    //Core text method 
    CTFontRef fontRef = CTFontCreateWithName((CFStringRef)@"Crimson", 15.0f, NULL); 

    NSDictionary *attDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
            (__bridge_transfer id)fontRef, (NSString *)kCTFontAttributeName, 
            (id)[[UIColor blueColor] CGColor], (NSString *)kCTForegroundColorAttributeName, 
            nil]; 

    NSAttributedString *attString = [[NSAttributedString alloc] initWithString:self.entry.message attributes:attDictionary]; 

    //Flip the coordinate system 
    CGContextSetTextMatrix(context, CGAffineTransformIdentity); 
    CGContextTranslateCTM(context, 0, self.bounds.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 



    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathAddRect(path, NULL, rect2); 

    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge_retained CFAttributedStringRef)attString); 
    CTFrameRef theFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, [attString length]), path, NULL); 
    CFRelease(framesetter); 
    CFRelease(path); 

    CTFrameDraw(theFrame, context); 
    CFRelease(theFrame); 

फ़ॉन्ट समान है। मुझे समझ में नहीं आता कि क्यों अलग-अलग प्रस्तुत किया जा रहा है।

+0

यह अलग-अलग लाइन स्पैक्सिंग जैसा दिखता है, आकार नहीं। –

+0

http://stackoverflow.com/questions/10067389/giving-framesetter-the-correct-line-spacing- समायोजन – bshirley

+0

आप सही हैं, यह है। मैं इसे एक ही लाइन दूरी के रूप में कैसे प्राप्त करूं? – Andrew

उत्तर

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