零基础 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;
}
原图:
效果图:
二.猜你喜欢
- iOS NSString 拆分字符串
- iOS NSString 截取字符串
- iOS NSString 和 NSArray 相互转换
- iOS NSString 包含字符串/匹配字符串
- iOS NSURL URLWithString 与 fileURLWithPath 区别
- iOS NSURL 与 NSString相互转换
- iOS NSString 获取中文字符串长度
- iOS NSString 判断字符串是否为空判
- iOS NSString 获取指定下标字符
- iOS NSString 匹配字符串开头
- iOS NSString 匹配字符串结尾
- iOS NSString 判断两个字符串是否相等
- iOS NSString 将字符串中的字母转换为大写
- iOS NSString 将字符串中的字母转换为小写
- iOS NSString 将字符串中的首字母变为大写
- iOS NSString 拼接字符串
- iOS NSString 插入字符串
- iOS NSString 删除字符串
- iOS NSNumber 和 int 相互转换
- iOS NSNumber compare 比较
- iOS NSNumber isEqualToNumber
- iOS NSValue 和 CGPoint 相互转换
- iOS NSValue 和 CGSize 相互转换
- iOS UIImage 与 RGBA 相互转换
- Object-C UIImage 缩放
- Object-C UIImage 裁剪
- Object-C UIImage 旋转
- Object-C UIImage 合并多张图片
- Object-C UIImage 黑白处理
- Object-C UIImage 美白
- Object-C UIImage 磨皮美白
- Object-C UIImage 添加文字
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容