iOS动态对象的创建和存储

时间:2014-06-09 22:42:48

标签: ios objective-c uiimageview

我拥有的是UIButton。我想要做的是,每次单击按钮时,都会创建一个新的UIImageView(我将在方法中设置大小/图像等),UIImageView将落到屏幕的底部。我该怎么做呢?我尝试创建对象并将其存储在NSMutableArray中并在数组上执行for循环,但这似乎不起作用。 (我正在做的事情的例子)

-(IBAction) button {
   [self createUiImage];
}
-(void) createUiImage {
   UIIMageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 15, 3)]
   iv.image = [UIImage imageNamed:@"image.png"];
   iv.hidden = NO;
   [self.view addSubview:iv];
   [array1 addObject:iv];
}
-(void) dropImageDown {
    for (UIImageView *a in array1) {
        a.center = CGPointMake(a.center.x, a.center.y + 10);
        if (a.center.y > 500) {
            [array1 removeAllObjects];
            [a removeFromSuperview];
        }
    }
}

并且此dropImageDown方法由NSTimer控制。

忘了添加这个:问题是形状不会落到底部,它会出现并且不会移动!

我还试过for (int i = 0; i < array size; i ++),但那也不行 感谢帮助,谢谢

3 个答案:

答案 0 :(得分:1)

请勿尝试使用计时器并自行移动视图。它会给动作不稳定的动画带来很大的负担。

改为使用UIView动画。

这样的事情:

-(void) animateImagesDown {
    for (UIImageView *a in array1) 
    {
      [UIView animateWithDuration: 1.0
      animations: ^
      {
        a.center = CGPointMake(a.center.x, 500);
      }
      completion: ^(BOOL finished) 
      {
        [a removeFromSuperview];
      }
      ];
    }
}

该代码会将所有视图设置为500的中心位置,然后将其删除。 (它们会同时被动画化。)

UIView动画默认使用轻松进入动画。 animateWithDuration UIView动画方法还有其他变体,可让您控制动画时序。 (查看methodanimateWithDuration:delay:options:animations:completion:上的文档(特别是选项参数。)

答案 1 :(得分:0)

答案 2 :(得分:0)

找到我遇到问题的原因......我没有初始化NSMutableArray因此它没有被识别。