Search code examples
iphonecocoa-touchquartz-2d

How to display text using Quartz on the iPhone?


I've been trying to display text using a Quartz context, but no matter what I've tried I simply haven't had luck getting the text to display (I'm able to display all sorts of other Quartz objects though). Anybody knows what I might be doing wrong?

example:

-(void)drawRect:(CGRect)rect
{   
  // Drawing code
  CGContextRef  context = UIGraphicsGetCurrentContext();
  CGContextSelectFont(context, "Arial", 24, kCGEncodingFontSpecific);
  CGContextSetTextPosition(context,80,80);
  CGContextShowText(context, "hello", 6);
  //not even this works
  CGContextShowTextAtPoint(context, 1,1, "hello", 6);
}    

Solution

  • Here is a fragment of code that I'm using.

    UIColor *mainTextColor = [UIColor whiteColor];
    [mainTextColor set];
    drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);
    

    And:

    static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
                              int maxFontSize, int minFontSize) {
        CGPoint point = CGPointMake(left, y);
        UIFont *font = [UIFont systemFontOfSize:maxFontSize];
        [text drawAtPoint:point forWidth:right - left withFont:font
           minFontSize:minFontSize actualFontSize:NULL
           lineBreakMode:UILineBreakModeTailTruncation
           baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
    }