2016-08-28 79 views
0

我有5个不同的UIImageViews,名为Obstacle 1至5.我制作了一个UIImageView数组,因此我一次只能访问一个,所以一次存储和访问它们会更容易。我试图改变图像的坐标,并且坐标正在改变,我已经测试过以确保。我的问题是,当坐标发生变化时,图像不会从原始位置移动。在UIImageView阵列中移动图像

Obstacles[i].center = CGPointMake(tempNum+(i*125), RandomPosition); 

我使用^来改变图像的位置。在我尝试将图像放入数组之前,这一切都工作正常。此外,

Obstacles[i].hidden = YES;  Obstacles[i].hidden = NO; 

不再有效。

UPDATE: 宣言

UIImageView *Obstacles[5]; 
IBOutlet UIImageView *Obstacle1; 
IBOutlet UIImageView *Obstacle2; 
IBOutlet UIImageView *Obstacle3; 
IBOutlet UIImageView *Obstacle4; 
IBOutlet UIImageView *Obstacle5; 

添加到阵列

for (int i=0;i<5;i++) 
{ 
    Obstacles[i] = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"Obstacle%i", i+1]]]; 
} 
+0

发布所有创建UIImageViews并将它们放入数组和屏幕上的代码。单单这两条线没有什么不对。 – user3537411

+0

@ user3537411我添加了你所要求的 – karateman10998

+0

尝试创建一个名为Obstacles而不是UIImageView的NSMutableArray * Obstacles [5]; – Arun

回答

0

您已创建数组这样

UIImageView *Obstacles[5]; 

而是使用NSMutableArray的

NSMutableArray *Obstacles = [[NSMutableArray alloc] init]; 

而在for循环

for (int i=0;i<5;i++) 
{ 
    [Obstacles addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"Obstacle%i", i+1]]]]; 
} 
0

你添加到阵列码简化版,是有意义的。您不添加Obstacles UIImageView,而是创建新的。尝试初始化数组是这样的:

UIImageView *Obstacles[5] = {Obstacle1, Obstacle2, Obstacle3, Obstacle4, Obstacle5}; 

如果所有五个这样的UIImageViews InterfaceBuilder下的链接正确的,然后改变它的地位就像

Obstacles[i].center = CGPointMake(tempNum+(i*125), RandomPosition); 

应该工作。

但有一个数组的帮助,如果你仍然有这个名称索引变量。

如果您有一系列视图,那么您可能不应再使用Interface Builder。尝试在代码中创建它们,手动将它们添加到超级视图:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSMutableArray *obstacles = [[NSMutableArray alloc] init]; 
    for (int i = 0; i < 5; i++) 
    { 
     UIView *obstacle = [[UIView alloc] initWithFrame:CGRectMake(0, i*100, 50, 50)]; 
     obstacle.backgroundColor = [UIColor redColor]; 
     [obstacles addObject:obstacle]; 
     [self.view addSubview:obstacle]; 
    } 

    for (int i = 0; i < 5; i++) 
    { 
     UIView *obstacle = obstacles[i]; 
     obstacle.center = CGPointMake(tempNum+(i*125), RandomPosition); 
    } 
}