今天想要试一下图片能不能随心所欲的剪切。
为此,我写了一个测试的Demo:
仅仅在ViewController中写了东西,下面是代码:

屏幕快照 2016-04-08 15.36.48.png

屏幕快照 2016-04-08 15.37.21.png

屏幕快照 2016-04-08 15.37.50.png

屏幕快照 2016-04-08 15.38.07.png
先看看什么都没处理时的效果:

屏幕快照 2016-04-08 16.18.39.png
我所想要剪切的图形如下图所示:

屏幕快照 2016-04-08 15.49.54.png
为了便于理解和记忆,我进行了如下测试:

屏幕快照 2016-04-08 15.49.54 2.png
第一种的代码:

屏幕快照 2016-04-08 17.23.24.png
效果为:

Simulator Screen Shot 2016年4月8日 17.10.22.png
第二种的代码:

屏幕快照 2016-04-08 17.24.46.png
第二种的效果:

Simulator Screen Shot 2016年4月8日 17.09.07.png
此外,不同的规则也会产生不同的效果:

屏幕快照 2016-04-08 15.49.54 3.png
使用非零环绕数规则,即CGContextClip()时的效果为:

Simulator Screen Shot 2016年4月8日 17.45.45.png
使用奇偶环绕数规则,即CGContextEOClip()时的效果为:

Simulator Screen Shot 2016年4月8日 17.47.17.png
通常下的上面规则:
使用奇偶环绕数规则:相邻的区域不会都填充,也不会都不填充。
使用非零环绕数规则:相同环绕路径的都会被填充,不同环绕路径的,相交的区域将不会填充。
具体的以对应的规则判断出来的结果为准。
加油~