создание галереи изображений - PullRequest
0 голосов
/ 03 июня 2011

Я пытаюсь создать галерею изображений, где изображения хранятся в комплекте ресурсов. Я храню свои изображения в массиве NSMutable, что я хочу, так это галерею изображений .... но результат довольно сильно отличается от того, что я ожидал. Приведенный ниже код работает отлично. код ...

enter image description here

_images =[NSMutableArray arrayWithObject:[UIImage imageNamed:@"logo1.png"]];
[_images  addObject:[UIImage imageNamed:@"logo2.png"]];
[_images  addObject:[UIImage imageNamed:@"logo3.png"]];
[_images  addObject:[UIImage imageNamed:@"logo4.png"]];
[_images  addObject:[UIImage imageNamed:@"logo5.png"]];
[_images  addObject:[UIImage imageNamed:@"logo6.png"]];
[_images  addObject:[UIImage imageNamed:@"logo7.png"]];
[_images  addObject:[UIImage imageNamed:@"logo8.png"]];
[_images  addObject:[UIImage imageNamed:@"logo9.png"]];
[_images  addObject:[UIImage imageNamed:@"logo10.png"]];
[_images  addObject:[UIImage imageNamed:@"logo11.png"]];
[_images  addObject:[UIImage imageNamed:@"logo12.png"]];
[_images  addObject:[UIImage imageNamed:@"logo13.png"]];
[_images  addObject:[UIImage imageNamed:@"logo14.png"]];
[_images  addObject:[UIImage imageNamed:@"logo15.png"]];
[_images  addObject:[UIImage imageNamed:@"logo16.png"]];

NSLog(@"ha ha ha:%d",_images.count);



UIScrollView *view = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
int row=0;
int coloumn=0;
for (int i=0; i< _images.count; i++)
{
    UIImage *thumb=[_images objectAtIndex:i];
    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    button.frame=CGRectMake(coloumn*100+24, row*80+30, 64, 64);
    [button setImage:thumb forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    button.tag=i;
    [view addSubview:button];
    if (coloumn==2) {
        coloumn==0;
        row++;
    }else {
        coloumn++;
    }

}

[view setContentSize:CGSizeMake(320, (row+1)*80+10)];
self.view=view;
[view release];

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

Проблема с вашим кодом здесь:

if (coloumn==2) {
    coloumn==0;   //-- ERROR!
    row++;

это должно быть:

    coloumn=0;   //-- correct!

с использованием == вместо =

0 голосов
/ 15 сентября 2012

Это работает очень хорошо, но вам придется внести некоторые изменения в код, когда вы измените размер.Скопируйте и вставьте его в свой Viewdidload;убедитесь, что у вас уже установлена ​​UIScrollview с IB с именем ссылки scrollView.

int row    = 0;
int colomn = 0;
int width  = 79;
int height = 79;
int offset = 1;
// int diff   = width * 0.5;
CGRect rect;

for (int i = 0; i < 45; i++) {

    if(i == 0){

        colomn = 0;

    }else{

        colomn += width + offset;

    };

    if(colomn >= ((int)scrollView.frame.size.width) - width){

        colomn = 0;
        row += height + offset;

    }

       rect =  CGRectMake(colomn, row, width, height);


    UIView *view = [[UIView alloc] initWithFrame:rect];
    [view setBackgroundColor:[UIColor redColor]];
    [scrollView addSubview:view];

}

[scrollView setContentSize:CGSizeMake(320, row+height)];
0 голосов
/ 03 июня 2011

Использование библиотеки three20

iPhone SDK: создание фотогалереи с Three20

enter image description here

Отредактировано:

Ваш код превосходен, за исключением неверного утверждения:

coloumn==0;

Вот почему ваш Коломн всегда указывает на 2-й столб.

Итакизмените его на coloumn = 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...