Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS动态对象创建和存储_Ios_Objective C_Uiimageview - Fatal编程技术网

iOS动态对象创建和存储

iOS动态对象创建和存储,ios,objective-c,uiimageview,Ios,Objective C,Uiimageview,我有一个按钮。我想做的是,每次单击按钮时,都会创建一个新的UIImageView(我将在方法中设置大小/图像等),UIImageView会落到屏幕底部。我该怎么做?我尝试过创建对象并将其存储在NSMutableArray中,然后在数组上执行for循环,但这似乎不起作用。(我正在做的示例) 这个dropImageDown方法是由NSTimer控制的 忘了添加这个:问题是形状没有落到底部,它出现了并且没有移动 我还尝试了(inti=0;I500。是的,您又对了!但我现在只测试一个对象:):)请耐心听

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

这个dropImageDown方法是由NSTimer控制的

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

我还尝试了(inti=0;I,但这也不起作用
感谢您的帮助,谢谢

不要尝试使用计时器,自己分步移动视图。它会产生不稳定的动画,给CPU带来很大的负担

改用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动画方法还有其他变体,可用于控制动画计时。(查看
方法animatewithduration:delay:options:animations:completion:
上的文档(特别是options参数)

使用此链接有助于理解概念

找到了我出现问题的原因…我没有初始化NSMutableArray,因此无法识别它。

您将
项目符号添加到
array1
中,而不是添加新的imageView(iv)抱歉,忽略这一点,它应该在if语句中,您有
[array1 removeAllObjects];
。我不认为您要删除整个数组;只有一个有中心的数组。y>500。是的,您又对了!但我现在只测试一个对象:):)请耐心听我说(换句话说,我只点击了一次按钮)谢谢你的回答,但是这不起作用。对象被创建了,但它没有移动,这与我遇到的问题相同。对象被创建了,但它们没有移动。我感觉这是因为它们存储在一个数组中……所以让我问你,我是否正确地创建和存储了对象?(请原谅我的术语,我是先学Java的,所以我对它比较熟悉)当我在创建对象引用后将其存储在数组中时,它是否会出错?这就是它在创建后不移动的原因吗?我看不出创建图像视图的方式有任何明显的问题。您发布了一个创建单个图像视图的方法。您是在循环中从另一个方法调用该方法吗?何时开始被调用?你确定在尝试设置视图动画之前要创建视图吗?另一件看起来很奇怪的事情:你的图像视图只有3点高。它们是否包含细的水平线?其他任何东西都太短,无法正确绘制。我在单击按钮时调用该方法(请注意,在我的代码中,按钮方法正在调用)[self createUiImage])。让我再检查一下,然后再回复您,谢谢您的帮助,我很感激。您好,谢谢您的回复,但是此链接对我的具体问题没有帮助
-(void) animateImagesDown {
    for (UIImageView *a in array1) 
    {
      [UIView animateWithDuration: 1.0
      animations: ^
      {
        a.center = CGPointMake(a.center.x, 500);
      }
      completion: ^(BOOL finished) 
      {
        [a removeFromSuperview];
      }
      ];
    }
}