小画家开发笔记
小画家开发笔记 GIT不光可以用于团队开发,而且适用于个人开发! 1. 新建绘制视图,用于整个的画图功能 1> 手指移动时,画图,需要记录手指移动的点 // 1. 取出手势 // 2. 取出点 // 3. 使用成员变量记录手指点 // 4. setNeedDisplay重绘视图 2> 由于每次都需要重新绘制,无法记录以前的点,因此采用一条路径记录所有点,在重新绘制时,绘制完整的路径 1) 定义一个路径属性 2) 手指按下时,实例化路径 3) 手指移动时,添加点到路径 4) 手指抬起时,将路径释放 5) drawRect时,直接绘制完整路径 3> 以前的路径没有被保留住 1) 使用一个数组记录住所有的绘制路径 2) 在每次手指抬起时,将路径添加至数组 3) 在重绘时,先绘制所有的路径,然后再绘制新的路径 4> 对绘制的线条进行美化 1> 经过测试,需要记录住绘制路径的颜色 2> 需要记录路径的线宽 3> 解决办法:自定义一个路径,包含有路径,颜色,线宽 /* 1> CGContextSetLineWidth 设置线宽 2> CGContextSetLineCap 设置线条顶点(起点,终点)的样式 3> CGContextSetLineJoin 设置连接点样式 4> CGContextSetLineDash 设置虚线样式 */ CGContextSetLineWidth(context, 10.0f); CGContextSetLineCap(context, kCGLineCapButt); CGContextSetLineJoin(context, kCGLineJoinBevel); /* 绘制虚线的参数 1. 上下文 2. 相位:虚线开始的位置,通常设置为0 3. 虚线段的长度数组 4. 虚线段数组的个数 */ CGFloat lengths[] = {10.0, 20.0f}; CGContextSetLineDash(context, 0, lengths, 2); 5> iOS6 & iOS7的屏幕适配问题 iOS7的市场保有量 74% 有两种解决方法 1) 用Storyboard的自动布局系统:AutoLayout 2) 用代码 a) 写死坐标:针对不同的屏幕 :3.5&4 不同的系统 iOS6没有状态栏,iOS7有状态栏 b) 使用VLF,基于自动布局的一套格式化语言,不太推荐 6> 绘制工具视图 1) 使用循环遍历依次设置按钮的标题 2) 根据标题标签的位置计算出下方红线的位置 3) 通过动画移动红线 懒加载,在需要时在加载,这一特性,在OC应用程序中,无所不在。 函数的重载,函数名是一样的,但是参数类型不一样,在OC中是不支持的。 OC消息机制,在需要时,才将函数加载到内存里。 从性能讲,懒加载的模式不如C++,但是从内存占用上,有非常明显优势! 4)实例化颜色选择视图,并显示 7> 绘制颜色选择视图 1)使用循环建立按钮,根据颜色数组计算出平均按钮的宽度 2) 设置按钮的图像 提示:可以使用背景颜色 如果使用背景颜色设置按钮,需要计算以下内容: (1) 左边的起始边距,上边距,下边距(可以使用宏定义,以便于调整) (2) 在循环计算按钮位置时,会稍微复杂一些! (3) 使用背景颜色最大的好处是:性能很高! 为什么在演练中使用图像? (1) 今天的演练重点就是Quartz 2D的绘图,根据不同的上下文,同样的代码可以绘图 (2) 打开图像上下文,是在专门的区域绘图,完成后,关闭上下文,交回共享区域的使用权 (3) 使用绘图的方式有一个好处,就是只需要计算按钮的宽度,其他的位置属性,均不需要计算 如果做应用程序开发,要学会用代码计算行列,例如九宫格!表情排列! 关于数学的计算(平面几何,立体几何,数值分析(矩阵计算)),物理计算(运动物理学),搞游戏开发! 8> 代理(委托)模式,通常是用于上下级之间的消息传递 1) 定义协议(双方共同遵守) 2) 定义代理,由代理执行具体的操作 3) 委托方发生某个事件时,通知代理工作 4) 代理方(被委托方)具体实现 代理实现不实现,如果使用其他框架(团队开发时),需要判断代理是否实现了方法,如果都是自己写的,这一步可以省略。 9> 小结 涉及到手势、触摸事件 绘图 路径绘图,路径数组绘图,图像绘制 使用不同上下文时的绘图 自定义控件 通过代码的方式完成iOS6 & iOS7的适配 GIT的基本演练,使用GIT允许无数次的后悔,而SVN只能后悔一次! GIT有本地的代码仓库,几遍不联网,也可以使用。 MVC结构
© . Powered by