在同一个 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
请注意:可能有更好的方法来解决这个问题,但这就是我的情况。
希望这会有所帮助。
我正在尝试实现一个 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
请注意:可能有更好的方法来解决这个问题,但这就是我的情况。 希望这会有所帮助。