一. 简单做一个画板 1. 建立一个UIView类 2. 在.m里建立一个延展 3. 分别定义一个起点, 一个终点的结构体属性 . 在建立一个存储路径的数组 4. 懒加载数组 5. 开始绘制 (1) 起点 (2) 终点 6. 重写 - (void)drawRect:(CGRect)rect 方法 二 ...
分类:
其他好文 时间:
2016-04-13 23:46:40
阅读次数:
241
在iOS开发中,创建图形,经常会使用贝塞尔路径,用于描绘一些比较复杂的图形。 使用贝塞尔路径,需要在view中的方法- (void)drawRect:(CGRect)rect中进行描绘。 上面的代码使用贝塞尔路径在view上创建了一个填充三角形。 贝塞尔曲线是一种矢量图形 ...
分类:
其他好文 时间:
2016-04-13 00:00:26
阅读次数:
152
正文 标题有点吓人,但是对于drawRect的评价倒是一点都不过分。在平日的开发中,随意覆盖drawRect方法,稍有不慎就会让你的程序内存暴增。下面我们来看一个例子。 做了一个画板功能,但是苦于内存问题一直得不到解决。画板功能很简单,就是记录手指触摸的轨迹然后绘制在屏幕上。下面我们来看一张效果图: ...
分类:
其他好文 时间:
2016-04-10 23:48:54
阅读次数:
188
一、控件的使用 模仿市面上app的手势解锁功能,实现的小控件,将控件封装到了一个UIView上 二、核心原理技术 1、触摸事件 (1)UIView的触摸三个触摸响应事件:开始、移动、结束 (2)CGRectContainsPoint 判断触摸点的位置 2、Quartz2D绘图 (1)drawRect ...
分类:
其他好文 时间:
2016-04-10 17:41:35
阅读次数:
155
layoutSubviews在以下情况下会被调用: 1、init初始化不会触发layoutSubviews。2、addSubview会触发layoutSubviews。3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。4、滚动一个UIScro ...
分类:
其他好文 时间:
2016-04-06 11:26:46
阅读次数:
148
DrawRect实现画板将会大量产生内存问题。 具体请看:http://bihongbo.com/2016/01/03/memoryGhostdrawRect/ 可能的原因有两个: 一是在手指绘制的过程中创建的大量点对象没有及时释放或者其他资源没有及时释放。 二是系统在绘制的过程中开始大量消耗内存。 ...
分类:
其他好文 时间:
2016-04-06 09:44:12
阅读次数:
324
一、CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘制,并且会将所有 ...
分类:
移动开发 时间:
2016-04-05 21:30:37
阅读次数:
250
首先两个方法都是异步执行。layoutSubviews方便数据计算,drawRect方便视图重绘。 layoutSubviews在以下情况下会被调用: 1、init初始化不会触发layoutSubviews。2、addSubview会触发layoutSubviews。3、设置view的Frame会触 ...
分类:
其他好文 时间:
2016-04-05 12:39:48
阅读次数:
135
这几天做了一个查看股票行情的app. 完成之后,当k线比较多的时候,app 对于捏合、拖动手势的反应不太流畅, 主要原因是drawRect: 干的活太多。 最后按照下面这些原则,进行调整修改,流畅度提高不少 总结如下: 1. 尽量不用drawRect: 2. 如果必须使用,drawRect:中的代码 ...
分类:
移动开发 时间:
2016-04-04 01:28:05
阅读次数:
316
1. 用被塞尔曲线做动画 效果:位置沿着贝瑟尔曲线位置移动,尺寸由大到小,透明度从完全可见过渡到彻底透明。 至于在DrawRect里面绘制贝塞尔曲线,可以直接百度,没有什么难点的。 - (void)clickButton:(id)sender { UIBezierPath *path = [UIBe ...
分类:
其他好文 时间:
2016-04-03 21:53:32
阅读次数:
160