iphone 手指拨动 touch的实例

#define kAnimationKey @"transitionViewAnimation"

 

#define HORIZ_SWIPE_DRAG_MIN 12 

#define VERT_SWIPE_DRAG_MAX 4 

 

// The following swipe code derives from Apple Sample Code

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

UITouch *touch = [touches anyObject]; 

startTouchPosition = [touch locationInView:self]; 

dirString = NULL;

}  

 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

UITouch *touch = touches.anyObject; 

CGPoint currentTouchPosition = [touch locationInView:self]; 

if (fabsf(startTouchPosition.x - currentTouchPosition.x) >= 

HORIZ_SWIPE_DRAG_MIN && 

fabsf(startTouchPosition.y - currentTouchPosition.y) <= 

VERT_SWIPE_DRAG_MAX) 

// Horizontal Swipe

if (startTouchPosition.x < currentTouchPosition.x) {

dirString = kCATransitionFromLeft;

}

else 

dirString = kCATransitionFromRight;

else if (fabsf(startTouchPosition.y - currentTouchPosition.y) >= 

HORIZ_SWIPE_DRAG_MIN && 

fabsf(startTouchPosition.x - currentTouchPosition.x) <= 

VERT_SWIPE_DRAG_MAX)

// Vertical Swipe

if (startTouchPosition.y < currentTouchPosition.y) 

dirString = kCATransitionFromBottom;

else 

dirString = kCATransitionFromTop;

} else 

{

// Process a non-swipe event. 

// dirString = NULL;

}

 

- (CATransition *) getAnimation:(NSString *) direction

{

CATransition *animation = [CATransition animation];

[animation setDelegate:self];

// [animation setType:@"oglFlip"]; 

[animation setType:kCATransitionPush];

[animation setSubtype:direction];

[animation setDuration:1.0f];

[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

return animation;

}

 

- (void) MoveLabel:(NSString *) direction

{

// First create a CATransition object to describe the transition

CATransition *transition = [CATransition animation];

// Animate over 3/4 of a second

transition.duration = 0.75;

// using the ease in/out timing function

transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

// Now to set the type of transition. Since we need to choose at random, we'll setup a couple of arrays to help us.

 

transition.type = kCATransitionPush;

 

transition.subtype = direction;

// Finally, to avoid overlapping transitions we assign ourselves as the delegate for the animation and wait for the

// -animationDidStop:finished: message. When it comes in, we will flag that we are no longer transitioning.

transitioning = YES;

transition.delegate = self;

// Next add it to the containerView's layer. This will perform the transition based on how we change its contents.

[self.layer addAnimation:transition forKey:nil];

[self switchPage];

}

 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

{

if (dirString) 

{

//CATransition *animation = [self getAnimation:dirString];

//[self exchangeSubviewAtIndex:0 withSubviewAtIndex:1];

//[[self layer] addAnimation:animation forKey:kAnimationKey];

[self MoveLabel:dirString];

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值