2011-04-27 5 views
0

하나의 이미지에서 3 장의 이미지가 3 개 (크롭 핑으로) 있지만 이미지 뷰의 이동을 관리하는 방법은 내가 다른 객체를 선언하거나 다른 방법으로 선언해야한다는 것입니다 ... 가능합니다 .... 배열을 사용하여 이러한 많은 이미지를 관리하십시오. 친구를 도와주세요UIImageView로 재생 하시겠습니까?

우리는 개체의 배열로 할 수있는 ...?

- (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]; 


} 
UPDATE : 아직

가 지금은 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; 
      } 
    } 


} 

내가 터치에 방법이 너무 만이 개 이미지를 구현 시작 이미지를 교환하지만 너무 어려운 더 많은 이미지를 옴하는 것입니다

고지 사전

답변

1

이 개체를 관리하기 위해 NSMutableDictionary를 사용합니다. 다음과 같이 사전의 키를 정의 할 수 있습니다. 그런 다음 행 및 열 번호로 원하는 이미지에 액세스 할 수 있습니다.

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

UPDATE

NSMutableDictionary * myImageDict = ...; /// < 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를 이동하는 방법에 대해 UIIestureRecognizer를 사용하여 UIImageView에서 터치 이벤트를 모니터링 할 수 있습니다. 이러한 터치 이벤트, 특히 touchedMoved : withEvent :를 처리하고 UIImageView의 중심을 수정하면 UIImagesView를 원하는대로 이동할 수 있습니다.

+0

내가 pls 위의 코드를 추가 ... 제 제안을 ... 난 무작위로 터치하여보다 이미지를 설정해야 ... – AJPatel

+0

당신이 지금까지 내가이 별도의 UIImageview 개체를 사용하여 시도해 주셔서 감사합니다 터치 이벤트를 사용하십시오. 보자. 나에게 도움이 될지도 모른다. ... – AJPatel

+0

당신은 환영한다. :) – AechoLiu

1

여러 개의 uiimageview 객체를 가져와야하고 touchmove에서 터치 된 이미지 뷰의 중심을 이동해야합니다.

+0

나중에 친구 야 내가 정확히 같은 방식으로하지만 여기서 나는 3 * 3 (9 imageView obj)에 관심이있다. 그러나 매트릭스 크기가 그 시간에 너무 커질 때이 객체와 메모리를 너무 많이 관리하는 것이 어렵다. 또한 내 터치 이벤트 코드를 추가하십시오. – AJPatel

관련 문제