Изменение Изображения Используя Кнопку iPhone

У меня есть a UIImageView *picture

и a UIButton *next

и

- (IBAction)next {
}

Я хочу изменить изображение на представлении, но только если изображение равняется..., например, img1

Но с помощью той же кнопки я хочу также смочь изменить изображение если изображение = img2, но к другому изображению (img3)

До сих пор у меня есть этот код, но он дает мне ошибки:

- (IBAction)next {
    if (picture UIImage = imageNamed:@"img01.jpg") {
    [picture setImage: [UIImage imageNamed:@"img02.jpg"
    }
    if (picture UIImage = imageNamed:@"img02.jpg") {
    [picture setImage: [UIImage imageNamed:@"img03.jpg"
 }
}
1
задан Jason Plank 30 November 2011 в 14:33
поделиться

4 ответа

Я понял это сейчас, все, что я сделал, это забыл поставить .jpg в конец img% i;)

- (IBAction)next {
     static int index = 0;  // <-- here
    index++;
    // Set imageCount to as many images as are available
    int imageCount=16;
    if (index<=imageCount) {
        NSString* imageName=[NSString stringWithFormat:@"img%i", index];
        [picture setImage: [UIImage imageNamed: imageName]];
    }
}
1
ответ дан 2 September 2019 в 22:32
поделиться
- (IBAction)next {
    picture.tag++;
    [picture setImage:[UIImage imageNamed:
             [NSString stringWithFormat:@"img%02d.jpg",1+(picture.tag%2)]
    ]];
}

должно быть самым простым решением.

редактировать при первом щелчке мыши переходит к img02.jpg , при втором щелчке снова возвращается к img01.jpg . Увеличьте 2 , чтобы учесть img03.jpg и т. Д.

1
ответ дан 2 September 2019 в 22:32
поделиться

Подкласс UIImageView и добавьте свойство enum в заголовок:

typedef enum _PictureType {
    PictureTypeFirstImage = 0,
    PictureTypeSecondImage,
    PictureTypeThirdImage,
    PictureTypes
} PictureType;

@interface MyImageView : UIImageView {
    PictureType type;
}

@property (readwrite) PictureType type;

В реализации:

@synthesize type;

При инициализации изображения :

[picture setImage:[UIImage imageNamed:@"img01.jpg"]];
picture.type = PictureTypeFirstImage;

В методе действия:

- (IBAction) next {
    switch (picture.type) {
        case (PictureTypeFirstImage): {
            [picture setImage:[UIImage imageNamed:@"img02.jpg"]];
            picture.type = PictureTypeSecondImage;
            break;
        }
        case (PictureTypeSecondImage): {
            [picture setImage:[UIImage imageNamed:@"img03.jpg"]];
            picture.type = PictureTypeThirdImage;
            break;
        }
        default:
            break;
    }
}
0
ответ дан 2 September 2019 в 22:32
поделиться
- (IBAction)next {
    if ([[picture image] isEqual: [UIImage imageNamed:@"img01.jpg"]]) {

       [picture setImage: [UIImage imageNamed:@"img02.jpg"]];

    } else if ([[picture image] isEqual: [UIImage imageNamed:@"img02.jpg"]]) {

       [picture setImage: [UIImage imageNamed:@"img03.jpg"]];
    }
}

Кроме того, это довольно примитивный способ изменения изображения. Более элегантным способом было бы иметь глобальный int, который имел бы индекс текущего изображения, так что нажатие кнопки "next" просто увеличивало бы этот счетчик. Затем, если существует изображение с таким именем, переключиться на него:

// Объявить индекс в Header.h

index=0;

- (IBAction)next {
    index++;
    // Set imageCount to as many images as are available
    int imageCount=2;
    if (index<=imageCount) {
        NSString* imageName=[NSString stringWithFormat:@"img%02i", index];
        [picture setImage: [UIImage imageNamed: imageName]];
    }
}
0
ответ дан 2 September 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: