1. 程式人生 > >iOS學習必須了解的七大手勢

iOS學習必須了解的七大手勢

sla ssg 轉變 結束 改變 nac tar resource meta

文章只要你有一點點基礎應該就可以看的懂,文章只為學習交流

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,retain)UIImageView *imageView;
@property (nonatomic,assign)NSInteger index;//下標
@property (nonatomic,retain)NSMutableArray *images;//圖片名    字數組

@end

@implementation ViewController
#加載視圖

-(void)viewDidLoad
{

[super viewDidLoad];
//布局imageView
[self layoutImageView];
//1.創建輕拍手勢
[self tapGestureRecognizer];
//2.創建清掃手勢
[self swipeGestureRecognizer];
//3.創建長安手勢
[self longPressGestureRecognizer];
//4.創建平移手勢
[self panGestureTecognizer];
//5.創建捏合手勢
[self pinchGestureRecognizer];
//6.創建 旋轉手勢
[self rotationGestureRecognizer]
//7.創建邊緣手勢
[self screenEdgePanGestureRecognizer];

}

##布局ImageView

-(void)layoutImageView
{

//創建對象
UIImageView *imageView =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 375, 667)];
//配置屬性
imageView.backgroundColor =[UIColor purpleColor];
//設置圖片
imageView.image =[UIImage imageNamed:@"car1.jpg"];
//添加父視圖
[self.view addSubview:imageView];
//將創建的圖片視圖對象 給屬性賦值
self.imageView =imageView;
//打開用戶交互
self.imageView.userInteractionEnabled =YES;
self.images =[NSMutableArray array];
for (int i = 1; i<9; i++) {
    NSString * imageName =[NSString stringWithFormat:@"car%d.jpg",i];
    [_images addObject:imageName];
}
// _index =1;

}


#pragma 輕怕手勢
//創建輕拍手勢
-(void)tapGestureRecognizer
{

//創建手勢對象
UITapGestureRecognizer *tap =[[UITapGestureRecognizer alloc]initWithTarget:self     action:@selector(tapAction:)];
//配置屬性
//輕拍次數
tap.numberOfTapsRequired =1;
//輕拍手指個數
tap.numberOfTouchesRequired =1;
//講手勢添加到指定的視圖上
[_imageView addGestureRecognizer:tap];

}

//輕拍事件

-(void)tapAction:(UITapGestureRecognizer *)tap
{

//圖片切換
NSLog(@"拍一下");
_index ++;
if (_index == 8) {
    _index = 1;
}
self.imageView.image =[UIImage imageNamed:_images[_index]];

}
#pragma 清掃手勢

//清掃手勢
-(void)swipeGestureRecognizer
{

UISwipeGestureRecognizer *swipe =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
//配置屬性
//一個清掃手勢  只能有兩個方向(上和下) 或者 (左或右)
//如果想支持上下左右清掃  那麽一個手勢不能實現  需要創建兩個手勢
swipe.direction =UISwipeGestureRecognizerDirectionLeft;
//添加到指定視圖
[_imageView addGestureRecognizer:swipe];
UISwipeGestureRecognizer *swipe2 =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
swipe2.direction =UISwipeGestureRecognizerDirectionRight;
[_imageView addGestureRecognizer:swipe2];

}
//清掃事件
-(void)swipeAction:(UISwipeGestureRecognizer *)swipe
{

NSLog(@"掃一下");
if (swipe.direction ==UISwipeGestureRecognizerDirectionRight)       {
    NSLog(@"右清掃");
    _index --;
    if (_index < 1) {
        _index =7;
    }
    _imageView.image =[UIImage imageNamed:_images[_index]];
}else if(swipe.direction == UISwipeGestureRecognizerDirectionLeft){
    NSLog(@"左掃一下");
    _index ++;
    if (_index == 8) {
        _index=1;
    }
    _imageView.image =[UIImage imageNamed:_images[_index]];
}

}
#pragma 長按手勢
//創建長按手勢
-(void)longPressGestureRecognizer
{

UILongPressGestureRecognizer *longPress =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];
//最短長按時間
longPress.minimumPressDuration =2;
//允許移動最大距離
longPress.allowableMovement =1;
//添加到指定視圖
[_imageView addGestureRecognizer:longPress];

}
//長按事件
-(void)longPressAction:(UILongPressGestureRecognizer *)longPress
{

//NSLog(@"長按");
//對於長安有開始和 結束狀態
if (longPress.state == UIGestureRecognizerStateBegan) {
    NSLog(@"長按開始");
    //將圖片保存到相冊
    UIImage *image =[UIImage imageNamed:_images[_index]];
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}else if (longPress.state == UIGestureRecognizerStateEnded)
{
    NSLog(@"長按結束");
}

}

#pragma 平移手勢
//創建平移手勢
-(void)panGestureTecognizer
{

UIPanGestureRecognizer *pan =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
//添加到指定視圖
[_imageView addGestureRecognizer:pan];

}
//創建平移事件
-(void)panAction:(UIPanGestureRecognizer *)pan
{

//獲取手勢的位置
CGPoint position =[pan translationInView:_imageView];

//通過stransform 進行平移交換
_imageView.transform = CGAffineTransformTranslate(_imageView.transform, position.x, position.y);
//將增量置為零
[pan setTranslation:CGPointZero inView:_imageView];

}

#pragma 捏合手勢
-(void)pinchGestureRecognizer
{

UIPinchGestureRecognizer *pinch =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];
//添加到指定視圖
[_imageView addGestureRecognizer:pinch];

}
//添加捏合事件
-(void)pinchAction:(UIPinchGestureRecognizer *)pinch
{

//通過 transform(改變) 進行視圖的視圖的捏合
_imageView.transform =CGAffineTransformScale(_imageView.transform, pinch.scale, pinch.scale);
//設置比例 為 1
pinch.scale = 1;

}
#pragma 旋轉手勢

//創建旋轉手勢
-(void)rotationGestureRecognizer
{

UIRotationGestureRecognizer *rotation =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];
//添加到指定的視圖
[_imageView addGestureRecognizer:rotation];

}
//旋轉事件

-(void)rotationAction:(UIRotationGestureRecognizer *)rote
{

//通過transform 進行旋轉變換
_imageView.transform = CGAffineTransformRotate(_imageView.transform, rote.rotation);
//將旋轉角度 置為 0
rote.rotation = 0;

}
#pragma 邊緣手勢

//創建邊緣手勢
-(void)screenEdgePanGestureRecognizer
{

UIScreenEdgePanGestureRecognizer *screenPan = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screenPanAction:)];
[_imageView addGestureRecognizer:screenPan];

}
//創建邊緣事件
-(void)screenPanAction:(UIScreenEdgePanGestureRecognizer *)screenPan
{

NSLog(@"邊緣");

}


- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

iOS學習必須了解的七大手勢