Hi I am using this function to draw text on Image after the drawing on image is done but when I do this its showing me transparent text i.e. Text with opacity which I do not want it should be with alpha 1.0 I tried to add the fontcolor attribute with RGBA but dint work
-(UIImage*) drawText:(NSString*) text
inImage:(UIImage*) image
atPoint:(CGPoint) point
atSize :(CGSize) size
{
//[NSLog(@"Drawing Text on the Image : Text Posn x:%f y:%f ",point.x,point.y);
UIGraphicsBeginImageContext(_mainViewForDrawing.frame.size);
[image drawInRect:CGRectMake(_mainViewForDrawing.frame
.origin.x,_mainViewForDrawing.frame.origin.y,_mainViewForDrawing.frame.size.width,_mainViewForDrawing.frame.size.height)];
CGPoint pt;
pt.x = point.x + _camera2EditText.frame.size.width/2;
pt.y = point.y + _camera2EditText.frame.size.height/2;
UITextPosition *post = [_camera2EditText beginningOfDocument];
CGRect r = [_camera2EditText caretRectForPosition:post];
//[NSLog(@"Here is the rect: %f %f ",r.origin.x,r.origin.y);
CGRect rect = CGRectMake(r.origin.x, point.y + r.origin.y, _mainViewForDrawing.frame.size.width,_mainViewForDrawing.frame.size.height);
[[UIColor whiteColor] set];
//UIFont *font = [UIFont boldSystemFontOfSize:TextFontSize];
UIFont *font = [UIFont fontWithName:TEXT_FONT_NAME size:TEXT_FONT_SIZE];
if([text respondsToSelector:@selector(drawInRect:withAttributes:)])
{
//iOS 7
// NSDictionary *att = @{NSFontAttributeName:font};
NSDictionary *att = @{ NSFontAttributeName: font, NSForegroundColorAttributeName: [UIColor whiteColor]};
[text drawInRect:rect withAttributes:att];
}
else
{
//legacy support
[text drawInRect:CGRectIntegral(rect) withFont:font];
}
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
How to go about it
This is my method I use for drawing text onto an image, hopefully this will help. It uses the an attributed string instead to set the properties that you want:
+(UIImage*)drawFront:(UIImage*)image text:(NSString*)text atPoint:(CGPoint)point
{
UIFont *font = [UIFont fontWithName:@"Halter" size:21];
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
CGRect rect = CGRectMake(point.x, (point.y - 5), image.size.width, image.size.height);
[[UIColor whiteColor] set];
NSMutableAttributedString* attString = [[NSMutableAttributedString alloc] initWithString:text];
NSRange range = NSMakeRange(0, [attString length]);
[attString addAttribute:NSFontAttributeName value:font range:range];
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:range];
NSShadow* shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor darkGrayColor];
shadow.shadowOffset = CGSizeMake(1.0f, 1.5f);
[attString addAttribute:NSShadowAttributeName value:shadow range:range];
[attString drawInRect:CGRectIntegral(rect)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Should be easy enough for you to adapt to your needs... Let me know if you struggle!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With