我的一般问题是你如何拥有一个带有图像数组的对象:
#import <Foundation/Foundation.h>
@interface Object: NSObject {
UIImage *image[imageNumber];
}
然后拍摄这些图像并将它们应用到不同类中的按钮,从imageArray [0]开始,每隔几秒将其更改为imageArray [1]等,但停止循环在最后一张图片。
我特别做的是创建一个Plant对象:
#import <Foundation/Foundation.h>
@interface Plant : NSObject {
UIImage *plantImage[3];
int imageNumber; //to specify which image to display, increments with timer
NSTimer *plantImageTimer;
}
并宣布然后做了几个方法,如
-(void)addPlantImages:(UIImage *) firstImage withPlantImage2:(UIImage *) secondImage withPlantImage3:(UIImage *) thirdImage{
plantImage[0] = firstImage;
plantImage[1] = secondImage;
plantImage[2] = thirdImage;
}
//this makes the Plant into a button
-(void)createPlantButtonForPlant:(Plant *) plantType forView:(UIView *) view withButtonRect:(CGRect) buttonRect{
imageNumber=0;
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = buttonRect;
button.hidden = NO;
[view addSubview:button];
[plantType growPlant:button]; //explained in code below
}
从这里开始,我不知道该怎么做了。 我尝试使用NSTimer,但是您无法将参数放入选择器,因此我无法指定我想要循环图像的按钮(或工厂)。
我所拥有的植物中的额外花絮(不起作用);我错误地使用了NSTimer userinfo,但说实话,我不明白如何使用它。
-(void)growPlant:(UIButton *) button{
plantImageTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(changePlantImage:) userInfo:button repeats:YES];
}
-(void)changePlantImage: (UIButton *) plantButton{
if(imageNumber == 3){
[plantImageTimer invalidate];
} else {
[plantButton setImage:plantImage[imageNumber] forState:UIControlStateNormal];
imageNumber++;
}
}
我将Plant导入我的视图控制器(称为PracticeViewController)并试图使其成为当我单击一个按钮时,弹出一个Plant按钮并循环显示图像。
(void)buttonAction{
theButton.hidden = YES; //I did make this button, just didn't add the code here. Declared in header.
CGRect imageViewRect = CGRectMake(100, 100, 100, 100);
Plant *testPlant = [Plant new];
[testPlant addPlantImages:[UIImage imageNamed:@"plant2.png"] withPlantImage2:[UIImage imageNamed:@"plant2.png"] withPlantImage3:[UIImage imageNamed:@"plant2.png"];
[testPlant createButtonForPlant:testPlant forView:self.view withButtonRect:imageViewRect];
}
如果您需要更多代码或其他信息,请在下方发表评论,我会尽快回复。
答案 0 :(得分:0)
既然我已经完成了更多编程,我意识到我制作这段代码有多复杂了。无论如何,我所要做的就是添加
[button addTarget:self action:@selector(changePlantImage) forControlEvents:UIControlEventTouchUpInside];
制作按钮实例后。然后,这将滚动植物在其阵列中的任何图像。