码迷,mamicode.com
首页 > 其他好文 > 详细

touches

时间:2014-09-05 03:23:01      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:触摸 bounds

- (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

标签:触摸 bounds

原文地址:http://qccccc.blog.51cto.com/6004423/1548907

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!