在UIImage上添加文本
嗨我正在使用此function在图像绘制完成后在图像上绘制文本,但是当我这样做时它显示我透明文本,即不透明文本,我不希望它应该与alpha 1.0我试图添加fontcolor属性与RGBA但dint工作
-(UIImage*) drawText:(NSString*) text inImage:(UIImage*) image atPoint:(CGPoint) point atSize :(CGSize) size { //[NSLog(@"Drawing Text on the Image : Text Posn x:%fy:%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; }
怎么去吧
这是我用于将图像绘制到图像上的方法,希望这会有所帮助。 它使用属性字符串来设置所需的属性:
+(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; }
应该很容易让你适应你的需求……如果你挣扎,请告诉我!
如果要在图像上添加文本并想要从用户那里获取输入,则可以将该文本视图放在UIView中并制作图像并与背景合并。
//绘制文本视图以从中创建图像
UIGraphicsBeginImageContextWithOptions(viewInputText.bounds.size, true, 0) viewInputText.drawViewHierarchyInRect(viewInputText.bounds, afterScreenUpdates: true) let imageWithText = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() //create a UIImage from the current context and save it to camera roll. UIGraphicsBeginImageContextWithOptions(imgCorrection.bounds.size, true, 0) imgCorrection.image?.drawInRect(CGRect(x: 0, y: 0, width: imgCorrection.frame.size.width, height: imgCorrection.frame.size.height)) //Draw the text image in the current context to make a single image. imageWithText.drawInRect(viewInputText.frame) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() //save image on the camera roll.
有关详细信息,请参阅以下链接