2012-10-25 10 views
0

내가하려는 것은 스크롤 뷰에서 현재 이미지를 사진 앨범에 저장하는 것입니다. 매우 다양한 방법으로 시도했으며 스크롤 뷰의 마지막 이미지를 항상 사진 앨범에 저장합니다. 내가 코드에서 누락 된 것을 얻지 못한다.스크롤 뷰에서 현재 이미지 얻기

- (void)viewDidLoad 

    { 
    UIScrollView *imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    imageScrollView.delegate = self; 
    imageScrollView.pagingEnabled = YES; 
    for (int i = 0; i < 61; i++) { 

     CGFloat xOrigin = i * 320; 

pictures = [[NSArray alloc] initWithObjects:@"image0.png", @"image1.png", @"image2.png", @"image3.png", @"image4.png", @"image5.png", @"image6.png", @"image7.png", @"image8.png", @"image9.png", @"image10.png", @"image11.png", @"image12.png", @"image13.png", @"image14.png", @"image15.png", @"image16.png", @"image17.png", @"image18.png", @"image19.png", @"image20.png", @"image21.png", @"image22.png", @"image23.png", @"image24.png", @"image25.png", @"image26.png", @"image27.png", @"image28.png", @"image29.png", @"image30.png", @"image31.png", @"image32.png", @"image33.png", @"image34.png", @"image35.png", @"image36.png", @"image37.png", @"image38.png", @"image39.png", @"image40.png", @"image41.png", @"image42.png", @"image43.png", @"image44.png", @"image45.png", @"image46.png", @"image47.png", @"image48.png", @"image49.png", @"image50.png", @"image51.png", @"image52.png", @"image53.png", @"image54.png", @"image55.png", @"image56.png", @"image57.png", @"image58.png", @"image59.png", @"image60.png", nil]; 

     _image = [UIImage imageNamed:[pictures objectAtIndex:i]]; 

     _imageView = [[[UIImageView alloc] initWithImage:_image]autorelease]; 

     _imageView.tag = i+1; 

     _imageView.image = _image; 

     _imageView.frame = CGRectMake(xOrigin, 0, 320, 480); 

     UILongPressGestureRecognizer *gestureRecognizer = [[UILongPressGestureRecognizer alloc] 
                  initWithTarget:self 
                  action:@selector(handleLongPress:)]; 

     imageScrollView.userInteractionEnabled = YES; 

     [imageScrollView addGestureRecognizer:gestureRecognizer]; 
     gestureRecognizer.delegate = self; 
     [gestureRecognizer release]; 

     [imageScrollView addSubview:_imageView]; 

     [imageScrollView addSubview:myButton]; 

    } 

    imageScrollView.contentSize = CGSizeMake(320 * 61 , 480); 

    [self.view addSubview:imageScrollView]; 

} 

- (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer{ 

if (gestureRecognizer.state == UIGestureRecognizerStateBegan){ 

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Save Photo", nil]; 
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent; 
    [actionSheet showInView:self.view]; 
    [actionSheet release]; 

    }} 

    -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 

switch (buttonIndex) { 
    case 0: 

     [self performSelector:@selector(LongPress:) withObject:nil]; 

    break; 

    default: 
     break; 

}} 

- (void)LongPress:(UILongPressGestureRecognizer*)gestureRecognizer{ 


NSInteger currentIndex = roundf(_imageScrollView.contentOffset.x/320) + 1; 

//UIImageView *currentImage = [_imageScrollView viewWithTag:currentIndex]; 

UIImage* currentImage = [(UIImageView*)[_imageScrollView viewWithTag:currentIndex] image]; 


    UIImageWriteToSavedPhotosAlbum(_imageView.image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil); 

    } 

편집 :

나는이 중

- (void)LongPress:(UILongPressGestureRecognizer*)gestureRecognizer{ 

if([pictures objectAtIndex:0]) { 

    UIImageWriteToSavedPhotosAlbum(_imageView.image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil);  
} else if([pictures objectAtIndex:1]) { 

     UIImageWriteToSavedPhotosAlbum(_imageView.image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil); 
} 

이 도움을 주셔서 감사 작동하지 않는이 howcome을 시도했다.

감사합니다.

답변

2

2-3 가지 옵션이 있습니다. 옵션이 나를 위해 완벽하게 작동한다고 말할 것입니다.

UIScrollView 클래스를 하위 클래스로 만들고 UIImageView 객체를 지역화 (즉, for 루프 자체에 선언)하면 각 이미지 뷰에 태그를 할당하십시오. userInteraction을 UIImageView로 설정합니다. 그렇지 않으면 터치를 감지하지 못하고 현재 클래스의 UIScrollView 하위 클래스 &에 touchesBegan 메소드를 작성합니다. 그런 다음 GestureRecognizer를 처리 할 때 원하는 코드를 작성하십시오. 그리고 UIScrollView의 touches 메서드에서 현재 클래스의 touchesBegan을 호출합니다.

스스로를 배우고 배우십시오.