How to change image in UIImageView the same as Photo Gallery?

1

Scenery:

Upload some images to a NSArray and show them in UIImageView as is done in the photo gallery. But without the options to edit. Just view and switch to the side using the swipe gesture.

I made a code manually but did not get the desired end result.

Code I made:

#import "ViewController.h"

@interface ViewController (){


    // Array para salvar imagens
    NSArray* imagens;

    //Imagens
    UIImage* img1, *img2, *img3;

    // ScrollView que fará a mudança
    IBOutlet UIScrollView *scrollView;
}

@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // Pegando as imagens
    img1 = [UIImage imageNamed:@"acai11.jpg"];
    img2  = [UIImage imageNamed:@"gloria4.jpg"];
    img3  = [UIImage imageNamed:@"gloria5.jpg"];

    // Alocando cada uma em uma posição no array
    imagens = [[NSArray alloc] initWithObjects:img1,img2,img3, nil];

    // Pegando as dimensões de scrollView e passando para tamanhoPagina
    CGSize tamanhoPagina = scrollView.frame.size; 
    NSUInteger pagina = 0;

    // Iniciando e posicionando uma imagem dentro do ScrollView
    for (int i = 0; i < [imagens count]; i++)

    {

        // Criando um UIImgageView
        UIImageView *imgView = [[UIImageView alloc] init];

        // Passando o tamanho do scrollView para imagView, para que a imagem tenha o mesmo tamanho que o ScrollView
        imgView.frame = CGRectMake(320*i, 0, 300,  scrollView.frame.size.height);
        imgView.image = [imagens objectAtIndex:i];
        [scrollView addSubview:imgView];

        imgView.frame = CGRectMake(tamanhoPagina.width * pagina ++ + 10, 0, tamanhoPagina.width - 20, tamanhoPagina.height);

    }

     scrollView.contentSize = CGSizeMake( scrollView.frame.size.width * imagens.count,  scrollView.frame.size.height);



}

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

@end

Below I will list the photos of the final result I want:

I believe there are native options for this task, and it is not complex or difficult to implement.

Any questions with the question just comment that I can add more information or provide details of the question.

    
asked by anonymous 29.09.2014 / 17:50

2 answers

0

It was very easy !!! I just made the following implementation:

1 - Start a project in Xcode, Simple Application with Storyboard. 2 - Then go to storyboard and add UIScrollView to the screen and create your property in the file ViewController.h

Then in the ViewController.m file, enter the following code:

#import "ViewController.h"

@interface ViewController (){
    CGSize pageSize;
    NSUInteger page;
    NSArray* imagens;
    UIImageView *imgView;

    // Array para salvar imagens


    //Imagens
    UIImage* img1, *img2, *img3;

    // ScrollView que fará a mudança
    IBOutlet UIScrollView *scrollView1;
}

@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


    // Permite a imagem seguinte ser parada no meio da tela, como se fosse uma paginação.
    scrollView1.pagingEnabled = YES;

    // Pegando as imagens
    img1 = [UIImage imageNamed:@"acai11.jpg"];
    img2  = [UIImage imageNamed:@"gloria4.jpg"];
    img3  = [UIImage imageNamed:@"gloria5.jpg"];

    // Alocando cada uma em uma posição no array
    imagens = [[NSArray alloc] initWithObjects:img1,img2,img3, nil];

    // scrollView1 é o IBOutlet para sua UIScrollView
    // Então pegamos o tamanho dela, as dimensões, e salvamos no pageSize
   pageSize = scrollView1.frame.size; 
   page = 0;


    // Iniciando e posicionando uma imagem dentro do ScrollView
    for (int i = 0; i < [imagens count]; i++)

    {

        // Criando um UIImgageView
        imgView = [[UIImageView alloc] init];

        // Passando o tamanho do scrollView para imagView, para que a imagem tenha o mesmo  
        // tamanho que o ScrollView
        imgView.frame = CGRectMake(320*i, 0, 300,  scrollView1.frame.size.height);

        // Carregamos a imagem equivalente no índex " i " para imgView
        imgView.image = [imagens objectAtIndex:i];

        // Adicionamos a imagem como uma subview do scrollView1
        [scrollView1 addSubview:imgView];

        // Aqui calculamos o posicionamento das imagens com base em seu tamanho para que  
        // fique corretamente lado a lado
        imgView.frame = CGRectMake(pageSize.width * page++ + 10, 0, pageSize.width - 20, pageSize.height);

}

     scrollView1.contentSize = CGSizeMake( scrollView1.frame.size.width * imagens.count,  scrollView1.frame.size.height);

}

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

@end

I hope I have helped !!

    
30.09.2014 / 22:55
1

There are some options for you to use.

Example: link

If you want to deploy yourself, let me give you some tutorials:

link

link

link

Both tutorials are well didactic and easy to implement.

I hope I have helped

    
29.09.2014 / 18:48