2015-06-22 22 views
5

Görüntü görüntüsü için paralaks efekti elde etmeye çalışıyorum. Paralaks etkisi için kod basittir ve sadece çalışır. UIImage'u UIImageView'a eklersek. Her iki tarafın da kendisini kirletmesi gereken bir desen resmim var.Desen görüntüsüyle paralaks efekti nasıl elde edilir?

UIColor'un patternWithImage yöntemini kullanmam gerekiyordu. Bu paralaksın çalışmasını yaptığımda, cihazı eğerken self.view'un arka plan rengini görebiliyorum.

Burada bir koddur:

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

Kod Swift veya Objective-C olabilir. Herhangi bir yardım takdir edilecektir. Teşekkür

DÜZENLEME: itmek ve pop animasyonlar çalıştığınızda @Clafou öneri gereğince, garip bir görünüm alıyorum.

enter image description here

+0

Bunu kontrol ettiniz mi: http://stackoverflow.com/questions/21544402/moving-an-image-with-ios-7-parallax-effect? Denemedim, sorununuzu çözüp çözmeyeceğini bilmiyorum. – Mrunal

+0

Düzenlemenizle kafam karıştı! "İtip pop animasyonları yapmaya çalıştığımda" ile ne demek istiyorsun? Hareket halinde neler olduğunu göstermek için animasyonlu bir GIF ekleyebilir misiniz? – Clafou

+1

Görünümlerinizi kök görünümün sınırları dışında genişletmek için değiştirdiyseniz, görünüm denetleyicisi geçişleri sırasında bu parçaları göstermemek için viewDidLoad uygulamasında self.view.clipsToBounds = true değerini ayarlamak isteyebilirsiniz. – Stefan

cevap

3

Ben senin etkisi o kayacak beri backgroundImageView ihtiyacı olan kabın kenarları ötesine uzatmak için tahmin.

Hızlı bir sınama olarak, AutoLayout'u kullanmazsanız, viewDidLoad'un sonuna self.backgroundImageView.frame = CGRectInset(self.backgroundImageView.frame, -50, -50); ekleyebilirsiniz.

Eğer AutoLayout'ı kullanırsanız, backgroundImageView 'un kutularının çerçevesinin ötesine uzatmak için sınırlamalarınızı değiştirin.

+0

Sorumu düzenledim! –

İlgili konular