如何设置UIImageView指向另一个UIImageView

时间:2011-10-22 18:37:06

标签: objective-c ios uiimageview

我希望有一个指向UIImage视图的指针,这样我就不必重复我的很多代码了。我需要根据它的按钮选择图像,但最后我将相同的代码应用于任何数字。 oneDigittwoDigitthreeDigit都是头文件中的@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];
}

1 个答案:

答案 0 :(得分:0)

假设oneDigit,twoDigit和threeDigit是UIImageViews,你可以做类似的事情

imageView = oneDigit;

由于两者都是指针,因此将imageView设置为oneDigit只会将imageView指向oneDigit的位置。当你将它设置为新图像时,不要首先自动释放它,因为如果将它设置为例如3Dit,它也会自动释放threeDigit。

此外,在将imageView设置为新图像后,您不需要手动设置imageView的图像属性,因为它实际上是使用相同的图像引用完全相同的UIImageView;它的名字不同。