1. 程式人生 > >iOS 點選圖片放大效果

iOS 點選圖片放大效果

今天帶來的是圖片點選放大效果,這種效果一般在微博,微信朋友圈中比較常見

下載地址


當我點選其中一張圖片時,就會進入詳情


具體實現如下

首先建立個 Controller(PhotoViewController)

//
//  PhotoViewController.h
//  點選圖片放大效果
//
//  Created by Amydom on 17/1/9.
//  Copyright © 2017年 Amydom. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface PhotoViewController : UIViewController

//儲存圖片的陣列
@property (nonatomic, strong)NSMutableArray *photoArr;
//圖片 tag
@property (nonatomic, assign)NSInteger imageTag;

@end
//
//  PhotoViewController.m
//  點選圖片放大效果
//
//  Created by Amydom on 17/1/9.
//  Copyright © 2017年 Amydom. All rights reserved.
//

#import "PhotoViewController.h"

@interface PhotoViewController ()

@end

@implementation PhotoViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 375, 667)];
    
    myScrollView.backgroundColor = [UIColor blackColor];
    myScrollView.pagingEnabled = YES;
    myScrollView.bounces = NO;
    
    [self.view addSubview:myScrollView];
    //根據tag 來獲取當前點選的圖片
    myScrollView.contentOffset = CGPointMake(self.view.frame.size.width * self.imageTag, 10);
    
    myScrollView.contentSize = CGSizeMake(self.view.frame.size.width * self.photoArr.count, 667);
    //建立
    for (int i = 0; i < self.photoArr.count; i++)
    {
        UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(self.view.frame.size.width * i + 10, 0, self.view.frame.size.width - 20, self.view.frame.size.height)];
        NSString *imgName = self.photoArr[i];
        img.image = [UIImage imageNamed:imgName];
        
        [myScrollView addSubview:img];
        
        //自適應圖片大小
        img.contentMode = UIViewContentModeScaleAspectFit;
        
    }
    
    //輕拍跳出照片瀏覽
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)];
    
    [myScrollView addGestureRecognizer:tap];

}

- (void)tapAction
{
    [self dismissViewControllerAnimated:YES completion:^{
        
        
    }];
}

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

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

然後在 ViewController 中建立四張小圖片,新增輕拍手勢

//
//  ViewController.m
//  點選圖片放大效果
//
//  Created by Amydom on 17/1/9.
//  Copyright © 2017年 Amydom. All rights reserved.
//

#import "ViewController.h"
#import "PhotoViewController.h"

@interface ViewController (){
    
    NSMutableArray *array;
    
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    array = [NSMutableArray arrayWithObjects:@"1.jpg", @"2.jpg",@"3.jpg",@"4.jpg", nil];
    for (int i = 0; i < array.count; i++) {
        
        UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(20 + 80 * i, 100, 70, 70)];
        img.image = [UIImage imageNamed:[array objectAtIndex:i]];
        
        img.userInteractionEnabled = YES;
        
        //截掉邊框
        img.clipsToBounds = YES;
        
        img.tag = 1000 + i;
        
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(TapAction:)];
        
        [img addGestureRecognizer:tap];
        
        [self.view addSubview:img];
    }

}

- (void)TapAction:(UITapGestureRecognizer *)tap{
    
    PhotoViewController *photoVC = [[PhotoViewController alloc] init];
    photoVC.imageTag = tap.view.tag - 1000 ;//獲取當前被點選圖片的 tag
    photoVC.photoArr = array;
    [photoVC setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];// 效果
    [self presentModalViewController:photoVC animated:YES];
    
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

這樣就可以實現啦........當然這裡只是單純的實現功能,至於想要圖片迴圈什麼的還是需要根據需求自行新增..