Добавьте 4 изображения в изображение и измените изображение с помощью касания или жеста смахивания

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

И всякий раз, когда вы нажимаете или проводите пальцем по изображению, оно будет меняться.

я хочу изменить изображение изображения 4 раза один за другим.


person iosDev    schedule 26.05.2012    source источник


Ответы (1)


ToggleImageView.h

@interface ToggleImageView : UIImageView {
    NSArray *images;
    int currentIndex;
}

- (id)initWithImages:(NSArray *)theImages;

@end

ToggleImageView.m

#import "ToggleImageView.h"

@implementation ToggleImageView

- (id)initWithImages:(NSArray *)theImages {
    self = [self initWithImage:[theImages objectAtIndex:0]];

    if (self) {
        images = [theImages retain];
        currentIndex = 0;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
        [self addGestureRecognizer:tap];
        [tap release];

        self.userInteractionEnabled = YES;
    }

    return self;
}

-(void)dealloc {
    [images release];

    [super dealloc];
}

- (void)handleTap:(UITapGestureRecognizer *)sender {
    if (images.count > 0) {
        currentIndex++;
        if (currentIndex > images.count - 1) {
            currentIndex = 0;
        }

        self.image = [images objectAtIndex:currentIndex];
    }
}

@end

А потом где-то в вашем контроллере

ToggleImageView *tv = [[ToggleImageView alloc] initWithImages:[NSArray arrayWithObjects:[UIImage imageNamed:@"image1"], [UIImage imageNamed:@"image2"], [UIImage imageNamed:@"image3"], [UIImage imageNamed:@"image4"], nil]];
[self.view addSubview:tv];
[tv release];
person iTukker    schedule 26.05.2012
comment
ToggleImageView *tv = [[ToggleImageView alloc] initWithImages:[NSArray arrayWithObjects:[UIImage imageNamed:@image1], [UIImage imageNamed:@image2], [UIImage imageNamed:@image3], [UIImage imageNamed:@image4], nil]] ; [self.view addSubview:tv]; [телевизионный выпуск]; где этот код я разместил ...... потому что uiimageview не поддерживает viewDidLoad - person iosDev; 26.05.2012
comment
где я должен использовать эти последние три строки кода - person iosDev; 26.05.2012
comment
loadView или viewDidLoad или viewDidAppear или любой метод настройки, который вы создали сами. - person Rick van der Linde; 26.05.2012
comment
@virendra Вы помещаете их в viewDidLoad вашего ViewController - person iTukker; 26.05.2012
comment
-(void)viewDidAppear:(BOOL)animated{ ToggleImageView *tv = [[ToggleImageView alloc] initWithImages:[NSArray arrayWithObjects:[UIImage imageNamed:@image1], [UIImage imageNamed:@image2], [UIImage imageNamed:@image3], [UIImage imageNamed:@image4], ноль]]; [self.view addSubview:tv]; [телевизионный выпуск]; } давая представление об ошибке, а не объединение или структуру - person iosDev; 26.05.2012
comment
Мне кажется, что вы поместили код в класс, который не расширяет UIViewController. Полезно прочитать: developer.apple.com/library/ios/ #избранныестатьи/ - person iTukker; 26.05.2012
comment
ок.......спасибо ........теперь все работает - person iosDev; 26.05.2012
comment
Я хочу перемещать или смахивать изображения как вправо, так и влево. Так что делать для правильного направления ?? - person Leena; 17.10.2012
comment
Вместо UITapGestureRecognizer используйте UISwipeGestureRecognizer, а в «handleSwipe» увеличьте или уменьшите индекс в зависимости от направления смахивания - person iTukker; 17.10.2012