2014-06-26 3 views
0

J'ai une vue d'image en tant que sous-vue et j'essaie de mettre en œuvre un geste de glisser vers le haut pour le jeter hors de l'écran. Le balayage fonctionne mais il n'anime pas.Écran de balayage secondaire désactivé

Voici comment j'ajoute la sous-vue:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [collectionView deselectItemAtIndexPath:indexPath animated:YES]; 

    InstagramMedia *media = mediaArray[indexPath.row]; 

    for (int i = 0; i < mediaArray.count; i++) 
    { 
     InstagramMedia *instagramMedia = [mediaArray objectAtIndex:i]; 
     [imageArray addObject:instagramMedia.standardResolutionImageURL]; 
    } 

    largeImageArray = imageArray; 
    imageIndex = indexPath.row; 

    UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath]; 
    CGRect cellRect = attributes.frame; 

    blurredView = [[UIToolbar alloc]initWithFrame:self.view.bounds]; 
    [blurredView setBarStyle:UIBarStyleBlackOpaque]; 
    [self.view addSubview:blurredView]; 

    imageView = [[UIImageView alloc]initWithFrame:cellRect]; 
    imageView.contentMode = UIViewContentModeScaleAspectFit; 
    imageView.userInteractionEnabled = YES; 
    [imageView setImageWithURL:media.standardResolutionImageURL placeholderImage:[UIImage imageNamed:@"placeholder"]]; 
    [self.view addSubview:imageView]; 
    CGRect finalFrame = CGRectMake(0, 50, 320, 301); 
    [UIView animateWithDuration:0.5 animations:^{ 
     imageView.frame = finalFrame; 
    }]; 

    UISwipeGestureRecognizer *swipeRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeLeft:)]; 
    swipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft; 
    [self.view addGestureRecognizer:swipeRecognizer]; 

    UISwipeGestureRecognizer *swipeRightRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeRight:)]; 
    swipeRightRecognizer.direction = UISwipeGestureRecognizerDirectionRight; 
    [self.view addGestureRecognizer:swipeRightRecognizer]; 

    swipeUpRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeUp:)]; 
    swipeUpRecognizer.direction = UISwipeGestureRecognizerDirectionUp; 
    [self.view addGestureRecognizer:swipeUpRecognizer]; 
} 

Et ce que je suis en train de faire:

- (IBAction)swipeUp:(id)sender 
{ 
    CGRect finalFrame = CGRectMake(0, -100, 320, 301); 
    [UIView animateWithDuration:0.5 animations:^{ 
     imageView.frame = finalFrame; 
     [imageView removeFromSuperview]; 
     [blurredView removeFromSuperview]; 
     [self.view removeGestureRecognizer:swipeUpRecognizer]; 
    }]; 
} 

Répondre

1
- (IBAction)swipeUp:(id)sender 
    { 
     CGRect finalFrame = CGRectMake(0, -100, 320, 301); 
     [UIView animateWithDuration:0.5 animations:^{ 
      imageView.frame = finalFrame; 

     } completion:^(BOOL finished) { 
[imageView removeFromSuperview]; 
      [blurredView removeFromSuperview]; 
      [self.view removeGestureRecognizer:swipeUpRecognizer]; 
}]; 
    } 

Vous enlevaient vue avant la fin de l'animation ... c'est pourquoi ça se passe.

+0

Merci! J'aurais dû le réaliser. – raginggoat

+0

C'est cool mais vous devez l'opter comme réponse correcte aussi .. :) – Alfa

+0

Il me faisait attendre pour marquer comme la bonne réponse. Je l'ai marqué maintenant. Merci encore. – raginggoat

Questions connexes