我希望有一个指向UIImage视图的指针,这样我就不必重复我的很多代码了。我需要根据它的按钮选择图像,但最后我将相同的代码应用于任何数字。 oneDigit
,twoDigit
和threeDigit
都是头文件中的@property(nonatomic, retain)
。我希望imageView能够指向其中一个UIImageViews。目前UIImageViews没有被removeFromSuperview
删除,因为imageView
没有指向对象但是创建了自己的对象..
当按下按钮时,会添加图像。我希望删除先前的图像,并根据按下的按钮绘制新图像。如果我用oneDigit替换imageView,代码将按照我的要求运行,但这需要我为每个变量添加更多代码。
见下面的简化示例:
- (void)viewDidLoad
{ ...
UIImageView *oneDigit;
UIImageView *twoDigit;
UIImageView *threeDigit;
}
-(IBAction)pressButton:(id)sender {
UIImage *image;
UIImageView *imageView;
UIButton *btn = (UIButton*)sender;
int value = [btn.titleLabel.text intValue];
switch (value) {
case 10:
case 15:
case 20:
[twoDigit removeFromSuperview]; //Remove old image from screen
imageView = twoDigit; //Update imageView pointer for current case
image = [UIImage imageNamed:@"twoDigit.png"];
break;
case 1:
case 2:
case 3:
case 4:
case 5:
[oneDigit removeFromSuperview];
imageView = oneDigit;
image = [UIImage imageNamed:@"oneDigit.png"];
break;
case 100:
case 200:
case 300:
[threeDigit removeFromSuperview];
imageView = threeDigit;
image = [UIImage imageNamed:@"threeDigit.png"];
break;
default:
break;
}
CGPoint point = btn.frame.origin;
CGFloat xposition = point.x - ((image.size.width - btn.frame.size.width) /2);
CGFloat yposition = point.y - ((image.size.height - btn.frame.size.height) /2);
imageView = [ [ UIImageView alloc ] initWithFrame:CGRectMake(xposition, yposition, image.size.width, image.size.height) ];
imageView.image = image;
imageView.contentMode = UIViewContentModeCenter;
[self.view addSubview:imageView];
}
答案 0 :(得分:0)
假设oneDigit,twoDigit和threeDigit是UIImageViews,你可以做类似的事情
imageView = oneDigit;
由于两者都是指针,因此将imageView设置为oneDigit只会将imageView指向oneDigit的位置。当你将它设置为新图像时,不要首先自动释放它,因为如果将它设置为例如3Dit,它也会自动释放threeDigit。
此外,在将imageView设置为新图像后,您不需要手动设置imageView的图像属性,因为它实际上是使用相同的图像引用完全相同的UIImageView;它的名字不同。