IOS 의 각종 제스처 조작 인 스 턴 스 코드
손짓
IOS 에서 제스처 동작 은 보통 UIGesture Recognizer 류 의 몇 가지 제스처 서브 클래스 로 이 루어 집 니 다.보통 우리 가 사용 하 는 제스처 는 이렇게 5 가지 입 니 다.
1.클릭 UITapGestureRecognizer
2.이동 UIPanGestureRecognizer
3.크기 조정 UIPinchGestureRecognizer
4.회전 UIRotationGestureRecognizer
5.청소 UISwipeGestureRecognizer
우리 위의 이 실례 에서 위의 이 다섯 가지 제스처 를 사 용 했 지만,그 중에서 클릭 과 청소 가 나타 나 지 않 았 고,단지 로 그 를 출력 했 을 뿐,잠시 후에 코드 를 보 았 다
다음은 이 몇 가지 제스처 를 소개 하 겠 습 니 다.
1,UITapGesture Recognizer 클릭 제스처
UITapGestureRecognizer* tapGes = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGes:)];
// , 1,1 ,2
tapGes.numberOfTapsRequired = 2;
이 클릭 제스처 클래스 는 하나의 속성 이 있 습 니 다 numberOfTaps Required 는 클릭 수 를 설정 하 는 데 사 용 됩 니 다.몇 번 을 클릭 해 야 이 사건 을 촉발 할 수 있 습 니 다.2,UIPanGesture Recognizer 이동 제스처
//
- (void)initPanGes{
UIPanGestureRecognizer* panGes = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGes:)];
[self.imgView addGestureRecognizer:panGes];
}
- (void)panGes:(UIPanGestureRecognizer*)ges{
//
CGPoint transPoint = [ges translationInView:self.imgView];
}
이동 제스처 자체 에 설정 할 수 있 는 속성 이 많 지 않 습 니 다.이동 이벤트 에서 손 을 터치 하면 사용 할 수 있 습 니 다. translationInView 방법 으로 현재 이동 좌표 점 획득3,UIPinchGesture Recognizer 크기 조정 제스처
//
- (void)initPinGes{
UIPinchGestureRecognizer* pinGes = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinGes:)];
[self.imgView addGestureRecognizer:pinGes];
}
- (void)pinGes:(UIPinchGestureRecognizer*)ges{
//
self.imgView.transform = CGAffineTransformScale(self.imgView.transform, ges.scale, ges.scale);
}
크기 조정 제스처 는 이벤트 에서 scale 속성 을 가 져 올 수 있 습 니 다.현재 크기 조정 값 을 표시 합 니 다.4、UIRotationGesture Recognizer 회전 제스처
//
- (void)initRotation{
UIRotationGestureRecognizer* rotationGes = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationGes:)];
[self.imgView addGestureRecognizer:rotationGes];
}
- (void)rotationGes:(UIRotationGestureRecognizer*)ges{
//
self.imgView.transform = CGAffineTransformRotate(self.imgView.transform, ges.rotation);
}
회전 제스처 는 이벤트 에서 rotation 속성 을 가 져 와 현재 회전 각 도 를 가 져 올 수 있 습 니 다.5、UISwipeGesture Recognizer 손 동작 가볍게 쓸 기
//
- (void)initSwipeGes{
//
UISwipeGestureRecognizer* swipeLeftGes = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGes:)];
// ,
// ,
//
swipeLeftGes.direction = UISwipeGestureRecognizerDirectionLeft;
[self.imgView addGestureRecognizer:swipeLeftGes];
}
- (void)swipeGes:(UISwipeGestureRecognizer*)ges{
// ges.direction
NSLog(@"%s diection:%lu",__func__,(unsigned long)ges.direction);
}
제스처 대상 을 가볍게 쓸 려 면 direction 속성 을 설정 해 야 합 니 다.기본적으로 왼쪽 에서 오른쪽으로 만 감청 합 니 다.이것 은 매 거 진 값 UI SwipeGesture Recognizer Direction 입 니 다.
UISwipeGestureRecognizerDirectionRight ( )
UISwipeGestureRecognizerDirectionLeft
UISwipeGestureRecognizerDirectionUp
UISwipeGestureRecognizerDirectionDown
우리 위 에 있 는 그 효과 도 구현 코드 를 살 펴 보 겠 습 니 다.
//
// ViewController.m
//
//
// Created by xgao on 16/3/24.
// Copyright © 2016 xgao. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UIGestureRecognizerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imgView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self initTapGes];
[self initPanGes];
[self initPinGes];
[self initRotation];
[self initSwipeGes];
}
//
- (void)initTapGes{
UITapGestureRecognizer* tapGes = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGes:)];
// , 1,1 ,2
tapGes.numberOfTapsRequired = 2;
tapGes.delegate = self;
[self.imgView addGestureRecognizer:tapGes];
}
- (void)tapGes:(UITapGestureRecognizer*)ges{
NSLog(@"%s",__func__);
}
//
- (void)initPanGes{
UIPanGestureRecognizer* panGes = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGes:)];
panGes.delegate = self;
[self.imgView addGestureRecognizer:panGes];
}
- (void)panGes:(UIPanGestureRecognizer*)ges{
//
CGPoint transPoint = [ges translationInView:self.imgView];
//
self.imgView.transform = CGAffineTransformTranslate(self.imgView.transform, transPoint.x, transPoint.y);
// ,
//
[ges setTranslation:CGPointZero inView:self.imgView];
NSLog(@"%s",__func__);
}
//
- (void)initPinGes{
UIPinchGestureRecognizer* pinGes = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinGes:)];
pinGes.delegate = self;
[self.imgView addGestureRecognizer:pinGes];
}
- (void)pinGes:(UIPinchGestureRecognizer*)ges{
//
self.imgView.transform = CGAffineTransformScale(self.imgView.transform, ges.scale, ges.scale);
//
//
ges.scale = 1;
}
//
- (void)initRotation{
UIRotationGestureRecognizer* rotationGes = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationGes:)];
rotationGes.delegate = self;
[self.imgView addGestureRecognizer:rotationGes];
}
- (void)rotationGes:(UIRotationGestureRecognizer*)ges{
//
self.imgView.transform = CGAffineTransformRotate(self.imgView.transform, ges.rotation);
//
//
ges.rotation = 0;
NSLog(@"%s",__func__);
}
//
- (void)initSwipeGes{
//
UISwipeGestureRecognizer* swipeLeftGes = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGes:)];
// ,
// ,
//
swipeLeftGes.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeftGes.delegate = self;
[self.imgView addGestureRecognizer:swipeLeftGes];
//
UISwipeGestureRecognizer* swipeUpGes = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGes:)];
//
swipeUpGes.direction = UISwipeGestureRecognizerDirectionUp;
swipeUpGes.delegate = self;
[self.imgView addGestureRecognizer:swipeUpGes];
}
- (void)swipeGes:(UISwipeGestureRecognizer*)ges{
// ges.direction
NSLog(@"%s diection:%lu",__func__,(unsigned long)ges.direction);
}
#pragma mark - UIGestureRecognizerDelegate
//
- (BOOL)gestureRecognizerShouldBegin:(UITapGestureRecognizer *)gestureRecognizer{
return YES;
}
// ,
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
@end
여기 서 주의해 야 할 것 은 두 가지 가 있다.1.이동,크기 조정,회전 세 가지 제스처 에 대해 우 리 는 그 값 으로 처리 하려 면 복원 하 는 것 을 기억 해 야 합 니 다!복원!복원!그게 중요 해!중요 한 얘 기 는 세 번~
이동 제스처 에서 setTranslation:CGPointZero 를 설정 하여 좌표 값 을 복원 해 야 합 니 다.그렇지 않 으 면 다음 이벤트 에서 이 좌표 값 을 터치 하면 중첩 됩 니 다.
크기 조정 제스처 에 ges.scale=1 을 설정 하여 크기 조정 값 을 복원 합 니 다.
회전 제스처 에 ges.rotation=0 을 설정 하여 각도 값 을 복원 합 니 다.
2.만약 에 우리 가 여러 제스처 를 함께 사용 해 야 할 때 delegate 안의 인 자 를 되 돌려 주 는 방법 을 설정 해 야 합 니 다.
// ,
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
위 에서 말 한 것 은 소 편 이 소개 한 IOS 의 각종 제스처 조작 인 스 턴 스 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.