Quartz 2D绘图 (2)再遇

2016-05-05  本文已影响71人  mojue

图片裁剪

直接裁剪图片

// 1.获取图形上下文
CGContextRef cxtRef = UIGraphicsGetCurrentContext();

// 2.圆形路径对象
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150) radius:50 startAngle:0 endAngle:M_PI * 2 clockwise:YES];

// 3.将路径对象添加到上下文
CGContextAddPath(cxtRef, path.CGPath);

// 3.2裁剪图形上下文,注意:必须是在添加完路径对象后,并且是渲染之前进行裁剪,否则没有意义。
CGContextClip(cxtRef);

// 4.渲染
CGContextDrawPath(cxtRef, kCGPathStroke);

// 5.绘制图片绘制图片需要在最后进行绘制
UIImage *image = [UIImage imageNamed:@"me"];
[image drawAtPoint:CGPointMake(100, 100)];

保存到相册和沙盒

> 相册

// 添加图片到相册中.  可选的监听方法格式如下:
//  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, __nullable id completionTarget, __nullable SEL completionSelector, void * __nullable contextInfo);
// 保存裁剪的图片到相册
UIImageWriteToSavedPhotosAlbum(imgCliped, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
#pragma mark - 监听保存图片的成功与失败
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    if (error) {
        NSLog(@"保存失败");
    } else {
        NSLog(@"保存成功");
    }
}

> 沙盒

// 保存到沙盒
// 文件路径
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"abc.png"];
NSLog(@"%@", filePath);
// 转为二进制文件
NSData *imgData = UIImagePNGRepresentation(imgCliped);
// 写入文件
[imgData writeToFile:filePath atomically:YES];

裁剪带圆环的图片


裁剪带圆环的图片


屏幕截图

触摸事件介绍

4种触摸事件

触摸事件的响应顺序和不接受触摸事件的几种情况

触摸事件的产生和传递过程

手势识别介绍

注意:imageView默认不支持多手势操作和用户交互,但是从媒体库拖入的图片是支持用户交互和多手势的。
上一篇下一篇

猜你喜欢

热点阅读