Object-C UIImage 添加文字

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 基础

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 线程

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> OpenGL ES

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> GPUImage

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> AVFoundation

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> CocoaPods


一.UIImage 添加文字

字体信息相关:


//NSString+StringSize.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface NSString (StringSize)
/**
 *  给定宽度,字体,返回高度
 *
 *  @param width PreferWidth
 *  @param font  字体
 */
- (CGSize)sizeWithPreferWidth:(CGFloat)width font:(UIFont *)font;

/**
 *  给定高度,字体,返回宽度
 *
 *  @param height 固定高度
 *  @param font  字体
 */
- (CGSize)sizeWithpreferHeight:(CGFloat)height font:(UIFont *)font;
@end



//NSString+StringSize.m
#import "NSString+StringSize.h"

@implementation NSString (StringSize)
- (CGSize)sizeWithpreferHeight:(CGFloat)height font:(UIFont *)font{
    if (!font) {
        return CGSizeZero;
    }
    NSDictionary *dict=@{NSFontAttributeName : font};
    return [self sizeWithpreferHeight:height attribute:dict];
}

- (CGSize)sizeWithpreferHeight:(CGFloat)height attribute:(NSDictionary *)attr{
    CGRect rect=[self boundingRectWithSize:CGSizeMake(MAXFLOAT, height) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:attr context:nil];
    CGFloat sizeWidth=ceilf(CGRectGetWidth(rect));
    CGFloat sizeHieght=ceilf(CGRectGetHeight(rect));
    return CGSizeMake(sizeWidth, sizeHieght);
}

- (CGSize)sizeWithPreferWidth:(CGFloat)width font:(UIFont *)font{
    if (!font) {
        return CGSizeZero;
    }
    NSDictionary *dict=@{NSFontAttributeName : font};
    return [self sizeWithPreferWidth:width attribute:dict];
}

- (CGSize)sizeWithPreferWidth:(CGFloat)width attribute:(NSDictionary *)attr{
    CGRect rect=[self boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:attr context:nil];
    CGFloat sizeWidth=ceilf(CGRectGetWidth(rect));
    CGFloat sizeHieght=ceilf(CGRectGetHeight(rect));
    return CGSizeMake(sizeWidth, sizeHieght);
}

@end

图片添加文字相关:

#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>
#import "NSString+StringSize.h"

#pragma mark - 图片添加文字
/**
 图片添加文字
 @param text            文字
 @param fontSize        字体大小
 @param textColor       字体颜色
 @param textFrame       字体位置
 @param image           原始图片
 @return UIImage *      添加文字的图片
 */


-(UIImage *)imageWithText:(NSString *)text
                 textFont:(NSInteger)fontSize
                textColor:(UIColor *)textColor
                textFrame:(CGRect)textFrame
              originImage:(UIImage *)image {
   
   if (!text)      {  return image;   }
   if (!fontSize)  {  fontSize = 17;   }
   if (!textColor) {  textColor = [UIColor blackColor];   }
   if (!image)     {  return nil;  }

    CGRect viewFrame = CGRectMake(0, 0, image.size.width, image.size.height);

   NSString *mark = text;
   CGFloat height = [mark sizeWithPreferWidth:textFrame.size.width font:[UIFont systemFontOfSize:fontSize]].height; // 此分类方法要导入头文件
   if ((height + textFrame.origin.y) > viewFrame.size.height) { // 文字高度超出父视图的宽度
       height = viewFrame.size.height - textFrame.origin.y;
   }
   
//    CGFloat w = image.size.width;
//    CGFloat h = image.size.height;
   UIGraphicsBeginImageContext(viewFrame.size);
   [image drawInRect:CGRectMake(0, 0, viewFrame.size.width, viewFrame.size.height)];
   NSDictionary *attr = @{NSFontAttributeName: [UIFont systemFontOfSize:fontSize], NSForegroundColorAttributeName : textColor };
   //位置显示
   [mark drawInRect:CGRectMake(textFrame.origin.x, textFrame.origin.y, textFrame.size.width, height) withAttributes:attr];
   
   UIImage *aimg = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   return aimg;
}



- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIImage* srcImage = [UIImage imageNamed:@"789.jpeg"];

    UIImage* dstImage = [self imageWithText:@"猿说编程 www.codersrc.com\n猿说编程 www.codersrc.com" textFont:50 textColor:[UIColor redColor] textFrame:CGRectMake(0, 200, srcImage.size.width, srcImage.size.height) originImage:srcImage];
 
    return;
}

原图:

图片[1]-Object-C UIImage 添加文字-猿说编程

效果图:

图片[2]-Object-C UIImage 添加文字-猿说编程

二.猜你喜欢


ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容