我拥有的是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 ++)
,但那也不行
感谢帮助,谢谢
答案 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因此它没有被识别。