from:http://www.cocoachina.com/bbs/read.php?tid=87846
Path 2.0 大部分效果分享(tableview左右滑动,时间,menu动画),有码
实现了大部分Path 2.0 特效
注(iOS5 only)
tableview添加手势检测代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
- (
void
)awakeFromNib{
UIPanGestureRecognizer* recognizer;
// handleSwipeFrom 是偵測到手势,所要呼叫的方法
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:
self
action:
@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)
{
return
YES
;
}
return
NO
;
}
- (
void
)handlePanFrom:(UIPanGestureRecognizer*)recognizer {
if
(recognizer.state == UIGestureRecognizerStateBegan) {
;
}
else
if
(recognizer.state == UIGestureRecognizerStateChanged) {
CGFloat xOffSet = [recognizer translationInView:[[UIApplication sharedApplication] keyWindow]].x;
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if
(xOffSet < 0) {
[appDelegate makeRightViewVisible];
}
else
if
(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);
}
else
if
(recognizer.state == UIGestureRecognizerStateEnded) {
if
(
self
.navigationController.view.frame.origin.x < -kTriggerOffSet)
[
self
moveToLeftSide];
// animate to right side
else
if
(
self
.navigationController.view.frame.origin.x > kTriggerOffSet)
[
self
moveToRightSide];
// reset
else
[
self
restoreViewLocation];
}
}
|
见附件
Path2DemoPrj.zip (185 K) 下载次数:1593