首页 > 代码库 > touches
touches
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// //获取刚开始触摸屏幕时的两个点
// NSArray * allTouches = [touches allObjects];
// UITouch * firstTouch = [allTouches firstObject];
// UITouch * secondTouch = [allTouches lastObject];
// _firstPreviousLocation = [firstTouch locationInView:self];
// _secondPreviousLocation = [secondTouch locationInView:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
//只有一个手指触摸屏幕,则不处理捏合操作.
if (1 == [touches count]) {
return;
}
//获得两个手指移动之后的位置.
NSArray * allTouches = [touches allObjects];
UITouch * firstTouch = [allTouches firstObject];
UITouch * secoundTouch = [allTouches lastObject];
//获取两个手指之前的位置
CGPoint _firstPreviousLocation = [firstTouch previousLocationInView:self];
CGPoint _secondPreviousLocation = [secoundTouch previousLocationInView:self];
//获取两个手指当前的位置
CGPoint firstCurrentLocation = [firstTouch locationInView:self];
CGPoint sencondCurrentLocation = [secoundTouch locationInView:self];
//获取之前两个点距离
CGFloat previousDistance = [self distanceOfPoint1:_firstPreviousLocation point2:_secondPreviousLocation];
//获取当前两个点距离
CGFloat currentDistance = [self distanceOfPoint1:firstCurrentLocation point2:sencondCurrentLocation];
//求变化的比例 处理previousDistance 可能为0 的情况 . 为0 就初一1
// CGFloat scale = currentDistance / previousDistance ? previousDistance : 1;
CGFloat scale = currentDistance / previousDistance;
//修改视图的大小按比例缩放
self.bounds = CGRectMake(0, 0, self.bounds.size.width * scale , self.bounds.size.height * scale);
//存储当前点
// _firstPreviousLocation = firstCurrentLocation;
// _secondPreviousLocation = sencondCurrentLocation;
}
//计算两个点的距离
- (CGFloat)distanceOfPoint1:(CGPoint)point1 point2:(CGPoint)point2
{
CGFloat dx = point1.x-point2.x;
CGFloat dy = point1.y-point2.y;
return sqrt(pow(dx, 2) + pow(dy, 2));
}
/**
frame : 包含四个参数 矩形区域左上角的XY坐标, 矩形区域的宽和高
frame 是相对于父视图的坐标原点的位置.
bounds: 包含四个参数:矩形区域左上角的坐标 , 矩形区域的宽和高 , 但是x 和y是相对于自身坐标的坐标原点的距离. 默认矩形区域左上角的点和自身坐标系的坐标原点重合 .
blueView.bounds = CGRectMake(-20, -20, 200, 200); 变得是坐标原点.
修改bounds左上角的位置,会影响自身坐标系的坐标原点的位置, 自身视图的位置不会改变
*/
//bounds
touches