【问题标题】:Moving image in UIImageView ArrayUIImageView 数组中的移动图像
【发布时间】:2016-08-28 00:53:45
【问题描述】:

我有 5 个不同的 UIImageView,分别命名为 Obstacle 1 到 5。我创建了一个 UIImageView 数组,这样可以更轻松地一次存储和访问它们,因为我很少一次只访问一个。我正在尝试更改图像的坐标,并且坐标正在更改,我已经对其进行了测试以确保。我的问题是,当坐标发生变化时,图像并没有从原来的位置移动。

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

我正在使用这个 ^ 来更改图像的位置。在我尝试将图像放入数组之前,这一切都很好。还有,

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

也不再有效。

更新: 声明

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]]];
}

【问题讨论】:

  • 发布所有创建 UIImageViews 并将它们放入数组和屏幕上的代码。单看这两行没有错。
  • @user3537411 我添加了你要求的内容
  • 尝试创建一个名为 Obstacles 的 NSMutableArray 而不是 UIImageView *Obstacles[5];
  • 您可能需要在主线程中执行此操作。

标签: objective-c arrays uiimageview


【解决方案1】:

你已经创建了这样的数组

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]]]];
}

【讨论】:

    【解决方案2】:

    您添加到数组的代码没有意义。您没有添加障碍 UIImageView,而是创建新的障碍。尝试像这样初始化您的数组:

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

    如果这五个 UIImageViews 都在 InterfaceBuilder 中正确链接,那么改变它的位置就像

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

    应该可以。

    但是,如果您仍然有这个名称索引变量,那么拥有一个数组会有所帮助。

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

    - (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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      相关资源
      最近更新 更多