手势方向指示
#define radiansToDegrees(x) (180.0 * x / pi)
/// 旋转方向图片
- (void)showFlagImageView:(UIImageView *)imageView start:(CGPoint)start end:(CGPoint)end {
// 计算角度
CGFloat degrees = [self distanceFromPointX:start distanceToPointY:end];
if (!isnan(degrees)) {
imageView.hidden = NO;
// 计算弧度
CGFloat radians = degrees * pi / 180;
// 旋转图片
imageView.transform=CGAffineTransformMakeRotation(radians);
}
}
/// start 为圆点 end为终点 计算iOS坐标系角度
-(float)distanceFromPointX:(CGPoint)start distanceToPointY:(CGPoint)end{
CGFloat height = end.y - start.y;
CGFloat width = end.x - start.x;
CGFloat rads = atan(height/width);
CGFloat degrees = radiansToDegrees(rads);
if (end.x > start.x && end.y < start.y) {
// 一象限
degrees += 360;
} else if (end.x < start.x && end.y < start.y) {
// 二象限
degrees += 180;
} else if (end.x < start.x && end.y > start.y) {
// 三象限
degrees += 180;
} else if (end.x > start.x && end.y > start.y) {
// 四象限
} else if (end.y == start.y && end.x > start.x) {
// x正
degrees = 0;
} else if (end.x == start.x && end.y > start.y) {
// y负
degrees = 90;
} else if (end.y == start.y && end.x < start.x) {
// x负
degrees = 180;
} else if (end.x == start.x && end.y < start.y) {
// y正
degrees = 270;
} else {
// 原点
degrees = 0;
}
return degrees;
}