如何在iPhone中管理多个UIImageView

时间:2012-07-20 13:38:06

标签: iphone

我想在主视图的每个点击上动态创建UIImageView,并且还希望通过手指移动来移动所有创建的UIImageView。我已经成功动态创建每次触摸我的代码是下面:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];
    CGPoint pt = [touch locationInView:self.view];

    imgView = [[[UIImageView alloc] initWithFrame:CGRectMake(pt.x,pt.y, 100, 100)] autorelease];
    imgFilepath = [[NSBundle mainBundle] pathForResource:@"img" ofType:@"png"];
    img = [[UIImage alloc] initWithContentsOfFile:imgFilepath];
    imgView.tag=i;  
    [imgView setImage:img];
    [img release];
    [self.view addSubview:imgView];
}  

现在我想通过手指移动来移动任何动态创建的UIImageView。 感谢。

2 个答案:

答案 0 :(得分:4)

在您创建它的方法中将UIImageView的userInteractionEnabled属性设置为yes(即您发布的方法):

imgView.userInteractionEnabled = YES;

那么你很可能需要子类化UIImageView并实现以下方法来移动图像视图:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

提示:在touchesMoved:等方法中,您需要跟踪用户手指移动的位置 - 在阅读了一些您最有可能最终使用-[UITouch locationInView:]的文档后 - 您需要将坐标转换为图像视图的超视图,然后在这种情况下移动图像视图本身。

答案 1 :(得分:1)

touchesBegan中检测到您触及的imageView。在touchesMoved中移动选定的imageView,将其中心设置为移动的触摸点。