0

私は多くのブログを読んでいますが、uiimageでテキストを作成する方法を示しているすべてのブログを読んでいますが、書かれたテキストのuimageが必要です。誰かがこれについて何か考えを持っているなら、私を助けてください.どうもありがとう.

4

2 に答える 2

1

こんにちは、これを試してみてください....うまくいくことを願っています

-(UIImage *)imageFromText:(NSString *)text withImage:(UIImage*)img{
   // set the font type and size
   UIFont *font = [UIFont systemFontOfSize:100.0];  
   CGSize size  = [text sizeWithFont:font];

   // check if UIGraphicsBeginImageContextWithOptions is available (iOS is 4.0+)
   if (UIGraphicsBeginImageContextWithOptions != NULL)
       UIGraphicsBeginImageContextWithOptions(size,NO,0.0);
   else
       // iOS is < 4.0 
       UIGraphicsBeginImageContext(size);

   // optional: add a shadow, to avoid clipping the shadow you should make the context size bigger 
   //
   CGContextRef ctx = UIGraphicsGetCurrentContext();
   CGContextSetShadowWithColor(ctx, CGSizeMake(0.0, 1.0), 5.0, [[UIColor blackColor] CGColor]);
   CGContextSetBlendMode(ctx,kCGBlendModeNormal);
//   CGContextSetFillColorWithColor(ctx, [UIColor whiteColor].CGColor);

    CGContextSetFillColorWithColor(ctx, [UIColor colorWithPatternImage:img].CGColor);


   /*NSLog(@"Rect  %@",CGContextGetClipBoundingBox(ctx));
    CGImageRef alphaMask = CGBitmapContextCreateImage(ctx);
    CGContextClipToMask(ctx, CGContextGetClipBoundingBox(ctx), alphaMask);*/


   // draw in context, you can use also drawInRect:withFont:
   [text drawAtPoint:CGPointMake(0.0, 0.0) withFont:font];

   // transfer image
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();    

   return image;
}

メソッド呼び出しは...

[self imageFromText:@"Booooooooom"];
于 2012-08-30T07:55:28.720 に答える
0

このコードのスニペットを確認してください。動作するはずです。関数内のパラメータの一部を自由に変更できます。別の場所で作成された UIImage をこのメソッドに渡す必要があることに注意してください。

//Add text to UIImage
-(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
    CGContextSetTextMatrix(context, CGAffineTransformMakeRotation( -M_PI/4 ));

    CGContextShowTextAtPoint(context, 4, 52, text, strlen(text));


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

    return [UIImage imageWithCGImage:imageMasked];
}
于 2012-08-30T07:54:12.810 に答える