为图片添加水印文字, 需要先获取图片的图形上下文. 将文字绘制到图形的上下文中, 再根据当前的图形上下文生成一张新的图片返回.
//0.加载图片
UIImage *image = [UIImage imageNamed:@"阿狸头像"];
//1.开启一个跟图片原始大小一样的上下文
//opaque: 不透明
/**
* 开启一个图形上下文
*
* @param size#> 开启的图形上下文的大小 description#>
* @param opaque#> 是否不透明 yes不透明 no透明 description#>
* @param scale#> 分辨率 如果是0则和屏幕分辨率一致 description#>
*
* @return 生成的图片
*/
//UIGraphicsBeginImageContextWithOptions(<#CGSize size#>, <#BOOL opaque#>, <#CGFloat scale#>)
UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);
//2.把图片绘制到上下文当中
[image drawAtPoint:CGPointZero];
//3.把文字绘制到上下文当中
NSString *str = @"pipi";
[str drawAtPoint:CGPointMake(10, 20) withAttributes:nil];
//4.从上下文当中生成一张图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//5.关闭上下文
UIGraphicsEndImageContext();
self.imgV.image = newImage;
根据一个View生成图片
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
上下文的矩阵操作
//平移操作
CGContextTranslateCTM(ctx, 100, 100);
//旋转
CGContextRotateCTM(ctx, M_PI_4);
//缩放
CGContextScaleCTM(ctx, 1.5, 1.5);
擦除指定区域
CGContextClearRect(ctx, rect);
对上下文进行裁剪
[clipPath addClip];
保存恢复/上下文状态 以栈的形式保存和恢复
CGContextSaveGState(ctx);
CGContextRestoreGState(ctx);
CADisplayLink
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(changeY)];
//想要让CADisplayLink 让它工作, 必须得要把它添加到主运行循环当中,
//当每一次屏幕刷新的时候就会调用指定的方法(屏幕每一秒刷新60次)
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];