New file |
| | |
| | | // |
| | | // JHPieForeBGView.m |
| | | // JHCALayer |
| | | // |
| | | // Created by cjatech-简豪 on 16/4/28. |
| | | // Copyright © 2016年 JH. All rights reserved. |
| | | // |
| | | |
| | | #import "JHPieForeBGView.h" |
| | | |
| | | @implementation JHPieForeBGView |
| | | |
| | | -(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ |
| | | |
| | | [self touchesBegan:touches withEvent:event]; |
| | | } |
| | | |
| | | |
| | | -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ |
| | | |
| | | UITouch *touch = [touches anyObject]; |
| | | |
| | | CGPoint p = [touch locationInView:self]; |
| | | |
| | | |
| | | |
| | | if ((p.x-self.frame.size.width/2)*(p.x-self.frame.size.width/2) + (p.y-self.frame.size.height/2)*(p.y-self.frame.size.height/2) >self.frame.size.height*self.frame.size.height) { |
| | | return; |
| | | } |
| | | |
| | | |
| | | /* 计算角度并block回调 */ |
| | | CGFloat aLen2 = (p.x - self.frame.size.width/2)*(p.x - self.frame.size.width/2) + (p.y - self.frame.size.width/2)*(p.y - self.frame.size.width/2); |
| | | CGFloat aLen = sqrt(aLen2); |
| | | |
| | | CGFloat cLen2 =self.frame.size.width/2 * self.frame.size.width/2; |
| | | CGFloat cLen = self.frame.size.width/2; |
| | | |
| | | CGFloat bLen2 = (p.x - self.frame.size.width)*(p.x - self.frame.size.width) + (p.y - self.frame.size.width/2)*(p.y - self.frame.size.width/2); |
| | | |
| | | |
| | | CGFloat angle = acos((aLen2 + cLen2 -bLen2)/2/aLen/cLen); |
| | | |
| | | if (p.y<self.frame.size.height/2) { |
| | | angle = M_PI*2 -angle; |
| | | |
| | | } |
| | | if (self.select) { |
| | | self.select(angle,p); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | @end |