0

CGRect の下部に NSString を描画しようとしています。これまでのところ、テキストを上部中央に配置することができましたが、下部に配置する必要があります。DrawAtPoint も試しましたが、うまくいきませんでした。これが私が現在持っている私のコードです: UIGraphicsBeginImageContext(img.size);

CGRect aRectangle = CGRectMake(0,0, img.size.width, img.size.height);
[img drawInRect:aRectangle];

[[UIColor whiteColor] set];
NSInteger fontSize = 25;
UIFont *font = [UIFont boldSystemFontOfSize: fontSize];

[text drawInRect:aRectangle withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentCenter];



UIImage *theImage=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

4

3 に答える 3

0

次の方法を使用します。

 -(UIImage *)imageFromText:(NSString *)text
{
  CGSize maximumSize = CGSizeMake(300, 1000); //set width for string to wrap.
  UIFont *font = [UIFont boldSystemFontOfSize:16];
  CGSize strSize = [text sizeWithFont:font constrainedToSize:maximumSize lineBreakMode:UILineBreakModeWordWrap];
  if (UIGraphicsBeginImageContextWithOptions != NULL)
    UIGraphicsBeginImageContextWithOptions(strSize,NO,0.0);
  else
    // iOS is < 4.0 
    UIGraphicsBeginImageContext(strSize);

  CGRect newframe = CGRectMake(0, 0, strSize.width, strSize.height);
  [text  drawInRect:newframe 
                  withFont:font 
             lineBreakMode:UILineBreakModeWordWrap 
                 alignment:UITextAlignmentLeft]; 
  UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();    
  return testImg;
}
于 2012-09-19T04:16:12.350 に答える
0

このコードが私の問題に非常に役立つことがわかりました。

- (UIImage *)addText:(UIImage *)img text:(NSString *)text1{
    int w = img.size.width;
    int h = img.size.height;
    //lon = h - lon;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);

    CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);

    char* text  = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];// "05/05/09";
    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context, kCGTextFill);
    CGContextSetRGBFillColor(context, 255, 255, 255, 1);


    //rotate text
    CGContextShowTextAtPoint(context, 0, 5, text, strlen(text));


    CGImageRef imageMasked = CGBitmapContextCreateImage(context);
    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];
}

于 2012-09-19T20:32:31.847 に答える
0

次のメソッドを使用できます: sizeWithFont:constrainedToSize:lineBreakMode テキスト サイズを取得し、左上のポイントを計算し、drawAtPoint を使用してテキストを描画します。

于 2012-09-19T02:54:00.247 に答える