我从一张图片中获得了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张图像,但是更难以管理更多图像
提前完成
答案 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的中心。