2015-06-22 11 views
5

Ho cercato di ottenere l'effetto di parallasse per una visualizzazione dell'immagine. Il codice per l'effetto di parallasse è semplice e funziona solo se aggiungo UIImage a UIImageView. Ho un'immagine modello che deve tessere se stessa su entrambi i lati.Come ottenere l'effetto di parallasse con l'immagine del motivo?

Quindi ho dovuto utilizzare il metodo patternWithImage di UIColor. Quando eseguo la parallasse, posso vedere il colore di sfondo dello self.view nei bordi quando inclino il dispositivo.

Qui si tratta di un codice:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    self.backgroundImageView.contentMode = UIViewContentModeCenter; 
    self.backgroundImageView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"connect"]]; 
    [self addParallaxEffectToView:self.backgroundImageView]; 
} 

- (void)addParallaxEffectToView:(UIView *)view 
{ 
    // Set vertical effect 
    UIInterpolatingMotionEffect *verticalMotionEffect = 
    [[UIInterpolatingMotionEffect alloc] 
    initWithKeyPath:@"center.y" 
    type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis]; 
    verticalMotionEffect.minimumRelativeValue = @(-50); 
    verticalMotionEffect.maximumRelativeValue = @(50); 

    // Set horizontal effect 
    UIInterpolatingMotionEffect *horizontalMotionEffect = 
    [[UIInterpolatingMotionEffect alloc] 
    initWithKeyPath:@"center.x" 
    type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis]; 
    horizontalMotionEffect.minimumRelativeValue = @(-50); 
    horizontalMotionEffect.maximumRelativeValue = @(50); 

    // Create group to combine both 
    UIMotionEffectGroup *group = [UIMotionEffectGroup new]; 
    group.motionEffects = @[horizontalMotionEffect, verticalMotionEffect]; 

    // Add both effects to your view 
    [view addMotionEffect:group]; 
} 

codice può essere in Swift o di Objective-C. Qualsiasi aiuto sarebbe apprezzato. Grazie

EDIT: Come da @Clafou suggerimento, sto diventando uno sguardo strano quando provo a spingere e animazioni pop.

enter image description here

+0

Avete controllato questo: http://stackoverflow.com/questions/21544402/moving-an-image-with-ios-7-parallax-effect? Non ho provato, quindi non so se risolverà il tuo problema o no. – Mrunal

+0

Sono confuso dalla tua modifica! Cosa intendi con "quando provo a spingere e pop le animazioni"? Saresti in grado di aggiungere una GIF animata per mostrare cosa succede in movimento? – Clafou

+1

Se hai modificato le tue viste per estendersi oltre i limiti della vista radice, penso che potresti voler impostare self.view.clipsToBounds = true in viewDidLoad per non mostrare quelle parti durante le transizioni del controller di visualizzazione. – Stefan

risposta

3

Immagino che i tuoi backgroundImageView esigenze di estendere oltre i bordi del suo contenitore in quanto l'effetto si sposterà esso.

Come test rapido, se non si utilizza AutoLayout è possibile aggiungere self.backgroundImageView.frame = CGRectInset(self.backgroundImageView.frame, -50, -50); alla fine di viewDidLoad.

Se si utilizza AutoLayout, modificare i vincoli per estendere l'estensione backgroundImageView oltre la cornice del contenitore.

+0

Modificato la mia domanda! –

Problemi correlati