Path 2.0 大部分效果分享

来源:互联网 发布:知之的幸福之家 编辑:程序博客网 时间:2024/06/05 05:33


http://www.cocoachina.com/iphonedev/toolthain/2011/1222/3768.html

源码由论坛会员zgrubby分享

实现了大部分Path 2.0 特效
注(iOS5 only),文章最后有源码下载
tableview添加手势检测代码

 

- (void)awakeFromNib{
 UIPanGestureRecognizer* recognizer;
    // handleSwipeFrom 是偵測到手势,所要呼叫的方法
    recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:selfaction:@selector(handlePanFrom:)];
    // 不同的 Recognizer 有不同的实体变数
    // 例如 SwipeGesture 可以指定方向
    // 而 TapGesture 則可以指定次數
    //recognizer.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;
    recognizer.delegate = self;
    [_tableView addGestureRecognizer:recognizer];
    [recognizer release];
}
 
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGPoint translation = [gestureRecognizer translationInView:[[UIApplication sharedApplication] keyWindow]];
     
    // Check for horizontal gesture
    if(sqrt(translation.x * translation.x) / sqrt(translation.y * translation.y) > 1)
    {
        returnYES;
    }
     
    returnNO;
}
 
- (void)handlePanFrom:(UIPanGestureRecognizer*)recognizer {
 
    if(recognizer.state == UIGestureRecognizerStateBegan) {
        ;
    }
    elseif (recognizer.state == UIGestureRecognizerStateChanged) {
        CGFloat xOffSet = [recognizer translationInView:[[UIApplication sharedApplication] keyWindow]].x;
         
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        if(xOffSet < 0) {
            [appDelegate makeRightViewVisible];
        }
        elseif (xOffSet > 0) {
            [appDelegate makeLeftViewVisible];
        }
         
        self.navigationController.view.frame = CGRectMake(xOffSet,
                                                          self.navigationController.view.frame.origin.y,
                                                          self.navigationController.view.frame.size.width,
                                                          self.navigationController.view.frame.size.height);
    }
    elseif (recognizer.state == UIGestureRecognizerStateEnded) {
        if(self.navigationController.view.frame.origin.x < -kTriggerOffSet)
            [selfmoveToLeftSide];
        // animate to right side
        elseif (self.navigationController.view.frame.origin.x > kTriggerOffSet)
            [selfmoveToRightSide];
        // reset
        else
            [selfrestoreViewLocation];
 
    }
}

 
原帖地址:http://www.cocoachina.com/bbs/read.php?tid=87846
 
源码下载:
Path2DemoPrj


原创粉丝点击