遇到一个需求是在页面上添加下面这样一个图片,根据用户点击的不同位置,让响应区域变颜色,以达到模拟按钮的感觉。
不同响应区域的变颜色的图片,UI给了 只有该区域变颜色,其他部分为透明 这样的图片。
先将上面这个未点击的图片添加在xib,然后依次添加不同位置点击的图片在上面并设置hide为yes。
所以在判定完用户点击的位置在某个区域中时,只需要将该图片hide设置为no,然后在touchesEnd方法中重新设置hide为yes即可。
那么该怎么判断用户点击了图片中的那个区域呢?
1.一开始想到的是用数学的办法,计算出不同区域的rect,然后在点击方法中用区域去判断,但是有些复杂,有没有简单一些的办法呢?
2.贝塞尔曲线。这是一个神器,只需要用贝塞尔曲线画出不同的区域,然后用
- (BOOL)containsPoint:(CGPoint)point;
这个方法去判断是否在区域内即可。
如何用贝塞尔曲线画圆和扇形呢?只要用到了贝塞尔曲线的这两个方法: