博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小画家开发笔记
阅读量:5270 次
发布时间:2019-06-14

本文共 1994 字,大约阅读时间需要 6 分钟。

小画家开发笔记


小画家开发笔记
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 

转载于:https://www.cnblogs.com/ChenYilong/p/3556311.html

你可能感兴趣的文章
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
Python 环境傻瓜式搭建 :Anaconda概述
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF219D Choosing Capital for Treeland
查看>>