2012-08-24 93 views
2

我必须在一个屏幕上交换四个图像。图像只能在左/右/上/下方向交换,而不能对角。例如,第一张图像可以与其右下方的图像交换,第二张图像只能与左侧和下方的图像交换,依此类推。任何人都可以请帮我关于如何做到这一点。由于在IOS中交换图像

回答

0

添加滑动手势识别。当用户滑动确定哪个方向并处理图像交换时。

[编辑] - 想象一个方形,分为四个相等的部分。左上部分的索引为零,右上角的索引为1,最下方的索引为2,最后右下角的索引为3.下面的代码检查当前索引,并从中确定图像可以进行交换,如果没有则不做任何事情。

这段代码是从我头顶开始的,所以可能会出现语法错误,但逻辑是合理的(我希望:D)。

- (void) viewDidLoad { 
// turn on user interaction on the image view as its off by default. 
[self.imageView setUserInteractionEnabled:TRUE]; 

UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionUp)]; 
[self.imageView addGestureRecognizer:recognizer]; 

self.currentImageIndex = 0; 
self.images = [NSArray arrayWithObjects:[UIImage imageNamed:@"top-left"],[UIImage imageNamed:@"top-right"],[UIImage imageNamed:@"bottom-left"],[UIImage imageNamed:@"top-right"],nil]; 

} 


-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer { 

if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) { 

if (self.currentImageIndex == 0 || self.currentImageIndex == 2) self.currentImageIndex++; // change to image to the right 
else return; // do nothing 

} 
else if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) { 

if (self.currentImageIndex == 1 || self.currentImageIndex == 3) self.currentImageIndex--; // change to the image to the left 
else return; // do nothing 

} 
else if (recognizer.direction == UISwipeGestureRecognizerDirectionUp) { 

if (self.currentImageIndex == 2 || self.currentImageIndex == 3) self.currentImageIndex -= 2; // change to the above image 
else return; // do nothing 

} 
else if (recognizer.direction == UISwipeGestureRecognizerDirectionDown) { 

if (self.currentImageIndex == 0 || self.currentImageIndex == 1) self.currentImageIndex += 2; // change to the above image 
else return; // do nothing 

} 
[UIView animationWithDuration:0.5 animations:^{ 
    [self.imageView setAlpha:0]; 
} completion^(BOOL finished){ 
    if (finished) { 
     [UIView animationWithDuration:0.5 animations:^{ 
      [self.imageView setImage[self.images objectAtIndex:self.currentImageIndex]]; 
      [self.imageView setAlpha:1]; 
     }]; 
    } 
}]; 
} 
+0

其不符合我的期望,请给我另一个答案。 – Priyanka

+0

我编辑的帖子包括一个工作解决方案,而不是sudo代码。 – bennythemink