玩UIImageView?

时间:2011-04-27 09:59:12

标签: iphone objective-c ios4

我从一张图片中获得了3 * 3张图片(通过裁剪)但是如何管理那些imageView的移动我必须声明所有这些的不同对象或任何其他方式是他们的......这是可能的使用数组管理这些图像....请帮助伙伴

我们可以通过对象数组来做...?

- (void)viewDidLoad {

UIImage *img = [UIImage imageNamed:@"3.jpg"];

for(int i = 0;i < 3;i++)
{
    for (int j = 0; j < 3 ; j++)

    [self SetImagePeces:i :j];

}
    [super viewDidLoad];
}


-(void) SetImagePeces:(int)col:(int)row
{

UIImage *img = [UIImage imageNamed:@"3.jpg"];

img1 = [[UIImageView alloc] init];
img1.frame = CGRectMake(0 + 235 * col, 0 + 235 * row, 233, 233);
img1.tag = row;

img1.userInteractionEnabled = YES;

CGRect clippedRect = CGRectMake(0 + 233 * col,700 - 233 * row, 233, 233);

UIImage *imgV = [self imageByCropping:img toRect:clippedRect];

img1.image = imgV;

[self.view addSubview:img1];
[img1 release];


}

更新::

现在我仍然在700 * 700大小的图像上进行实验,但是如何以我们的尺寸限制任何尺寸的图像..

**触摸事件:: **

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

UITouch *touch = [touches anyObject];
   if (touch.view == img2) {

           if (c2 == 0) {
                   tempImg = img2.image;
                   [flag replaceObjectAtIndex:1 withObject:@"1"];
                   c2++;
           }
           else {
                   for(int j=0;j<9;j++)
                   {
                           if(j==1)
                                   {[flag replaceObjectAtIndex:j withObject:@"0"];}
                           else
                           {
                                   int a=[[flag objectAtIndex:j]integerValue];
                           if (a==1) {
                                   img3.image=img2.image;
                                   [flag replaceObjectAtIndex:j withObject:@"0"];
                           }
                           }
                   }
                   img2.image = tempImg;
                   c2 = 0;
           }
   }
   if (touch.view == img3) {

           if (c2 == 0) {
                   tempImg = img3.image;
                   [flag replaceObjectAtIndex:2 withObject:@"1"];
                   c2++;
           }
           else {
                   for(int j=0;j<9;j++)
                   {
                           if(j==2)
                           {[flag replaceObjectAtIndex:j withObject:@"0"];}
                           else
                           {
                           int a=[[flag objectAtIndex:j]integerValue];
                           if (a==1) {
                                   img2.image=img3.image;
                                   [flag replaceObjectAtIndex:j withObject:@"0"];
                           }
                           }
                   }
                   img3.image = tempImg;
                   c2 = 0;
           }
   }


}

这里我在触摸开始方法交换图像所以只实现了2张图像,但是更难以管理更多图像

提前完成

2 个答案:

答案 0 :(得分:1)

我将使用NSMutableDictionary来管理这些对象。您可以将字典的键定义如下。然后,您可以使用行号和列号访问所需的图像。

- (NSString *)keyForRow:(int)row col:(int)col {
   return [NSString stringWithFormat:@"%d_%d", row, col];
}

<强>更新

NSMutableDictionary * myImageDict = ...; ///&LT;一个管理UIImageView的字典。

- (void)setImageView:(UIImageView *)image row:(int)row col:(int)col
   {
       [myImageDict setObject:image forKey:[self keyForRow:row col:col]];
   }

- (UIImageView *)imageWithRow:(int)row col:(int)col
{
    return [myImageDict objectForKey:[self keyForRow:row col:col]];
}

然后,您可以通过NSMutableDictionary管理具有行号和列号的UIImageView。

关于如何移动这些UIImageView,您可以使用UIGestureRecognizer监视UIImageView上的触摸事件。通过处理那些触摸事件,尤其是touchMoved:withEvent:,并修改UIImageView的中心,您可以根据需要移动这些UIImagesView。

答案 1 :(得分:1)

你需要拍摄多个uiimageview对象,并在touchmove上移动触摸的imageview的中心。