先上图
(图随意截的,不要在意)
系统本身的UISwitch其实很漂亮,但是呢,设计师设计的Switch,并不是那么简单的,需要显示文字,然后显示背景,而且大小可控制等等。。
这时候,特喵的系统的Switch就捉襟见肘了,作为一只程序猿,怎么能说功能实现不了呢
自己动手,丰衣足食伟大的领袖毛老爷子说的名言
言归正传,首先,看UISwitch实现的思路,是基于UIControl实现的。控件是对UIView派生类的实用增强及补充,并可以直接附着于导航栏、表格单元,甚至更大的对象。UIControl派生自UIView类,所以每个控件都有很多视图的特性,包括附着于其他视图的能力。所有
控件都拥有一套共同的属性和方法。
那么,咱这个自定义的Switch也是继承UIControl,省很多事情,而且事件的封装都搞定了~
当事件都搞定的时候,这时候需要关心的只是UI了~那么,这个时候,有显示而无事件,这就想到了CALayer,这时候,我选择的时CALayer的subClass:CAShapeLayer(两个重要的subClass:CAGradientLayer和CAShapeLayer)。drawInContext 绘制文字、图片等内容显示~这里有个比较坑的地方,CGContextDrawImage()函数绘制图片的时候,会上下翻转,需要对图片进行处理一下再进行绘制。
OK,提到这里,上代码~
http://pan.baidu.com/s/1sjmdbTr(密码:gccm)
