iOS海哥开发笔记 (海哥原创,绘图Quartz-2d的简单使用 二)
2016-03-08 10:07
351 查看
1.很多应用APP头像是圆的,怎么裁剪呢,绘图
那你可能说,不是有现成的
self.layer.masksToBounds
self.layer.cornerRadius 系统自带属性吗,那我就简单的说下原因吧
原因:drawrect会减轻CPU的绘制压力,这种方式UI可以将动画流畅性优化到极致,缺点是这些代码不好写啊,
,也会增加内存的开销。
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 图形上下文栈
CGContextSaveGState(ctx);
CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 200, 200));
// 裁剪
CGContextClip(ctx);
// 渲染
CGContextStrokePath(ctx);
//
裁剪要放在关闭上下文之前
UIImage *image = [UIImage imageNamed:@"22222"];
[image drawInRect:CGRectMake(100, 100, 200, 200)];
// 将栈定的上下文出栈
CGContextRestoreGState(ctx);
CGContextAddEllipseInRect(ctx, CGRectMake(70, 400, 200, 200));
CGContextFillPath(ctx);
2.重绘
//
重绘(这个方法内部会重新调用Drawrect方法:进行绘制,之前的东西全部清除)
[self setNeedsDisplay];
看了这些你就可以自己写一个涂鸦板了
这些只是简单的介绍吧,笔者很菜,入有错误,请联系改正,转载注明出处
那你可能说,不是有现成的
self.layer.masksToBounds
self.layer.cornerRadius 系统自带属性吗,那我就简单的说下原因吧
原因:drawrect会减轻CPU的绘制压力,这种方式UI可以将动画流畅性优化到极致,缺点是这些代码不好写啊,
,也会增加内存的开销。
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 图形上下文栈
CGContextSaveGState(ctx);
CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 200, 200));
// 裁剪
CGContextClip(ctx);
// 渲染
CGContextStrokePath(ctx);
//
裁剪要放在关闭上下文之前
UIImage *image = [UIImage imageNamed:@"22222"];
[image drawInRect:CGRectMake(100, 100, 200, 200)];
// 将栈定的上下文出栈
CGContextRestoreGState(ctx);
CGContextAddEllipseInRect(ctx, CGRectMake(70, 400, 200, 200));
CGContextFillPath(ctx);
2.重绘
//
重绘(这个方法内部会重新调用Drawrect方法:进行绘制,之前的东西全部清除)
[self setNeedsDisplay];
看了这些你就可以自己写一个涂鸦板了
这些只是简单的介绍吧,笔者很菜,入有错误,请联系改正,转载注明出处
相关文章推荐
- ios常见加密解密算法介绍与应用
- iOS海哥开发笔记 (海哥原创,Quartz-2d的简单使用 一)
- iOS开发企业版ipa分发
- 深入浅出-iOS函数式编程的实现 && 响应式编程概念
- 类似ios滑动开关
- 【Xamarin挖墙脚系列:IOS现有的设备SDK /OS/硬件一览】
- 解决Xcode库lib在generic iOS devices平台上编译失败的问题
- IOS-OC 编码建议
- iOS 9 学习系类: Gameplay Kit – Pathfinding
- iOS7.0适配问题
- 让我们再谈谈 iOS 安全
- IOS -定位(一)
- iOS中根据已有经纬度定位并显示在地图上
- ios开发显示wifi速率功能开发
- 指示器(菊花效果)代码演示--iOS开发
- 提示框逐渐消失、渐隐视图--iOS开发
- ios 常见错误记录
- ios中的多线程
- iOS开发技巧:设置导航栏全透明效果
- iOS学习 用scrollView 制作相册album 涉及双击事件