在同一个 UIImageView 中添加多个图像并在每次点击时更改它们

Add multiple image in same UIImageView and change them at each tap

我正在尝试实现一个 UIImageView,它在每次点击时显示不同的 .png(组织在 NSArray 中)。当点击到达最后一个 .png 时,下一个点击将显示第一个 .png,依此类推。 我在这里找到了一个旧答案: Add 4 image in imageview and change the picture with tap or swipe gesture 这似乎朝着正确的方向发展。但是,它似乎不适用于新的 XCode 并且由于主题已关闭,因此没有更多的可能性要求澄清或更新。 有人知道如何子类化整个 ImageView 以获得预期结果吗?

解决方案比我想象的要容易得多。

由于选择器的自定义值不能按我要求的方式传递,我创建了一个助手 属性 来保存当前显示的图像的索引,每次点击时增加它并相应地设置图像.

@interface YourViewController ()

@property (nonatomic, strong) NSArray *images;
@property (nonatomic, assign) NSInteger currentImageIndex;

@end


@implementation YourViewController

- (void)viewDidLoad {

// Here you fill your images array
self.images = ...   

//  Set currentImageIndex to 0 and display first image 
self.currentImageIndex = 0;
[self displayImageWithIndex:self.currentImageIndex];

// Additional code, like your button target/action
}
- (void)myButtonWasTapped:(id)sender
{
if(self.currentImageIndex + 1 < [self.images count]) {
    self.currentImageIndex++;
} else {
    self.currentImageIndex = 0;
}
[self displayImageWithIndex: self.currentImageIndex];
}

- (void)displayImageWithIndex:(NSInteger)index {
self.imageView.image = [self.images objectAtIndex:index];
}

@end

请注意:可能有更好的方法来解决这个问题,但这就是我的情况。 希望这会有所帮助。