2016-07-26 48 views
9

Kaydırma görünümünde ve içeride kaydırma görünümü var MainView ve bir diğeri de SideMenuView olarak 2 görünümüm var.kutu Yan menü için 3D animasyonu çevirin

Aşağıdakiler gibi animasyon yapmak istediklerim.

enter image description here

bu çalışma almak için yapılması gerekenleri bilen var mı?

+0

yerine senin bu animasyon gibi yan menüsünü kullanabilirsiniz olabilir. https://github.com/Yalantis/Side-Menu.iOS –

+0

@MeetDoshi: Birçok alternatif var ama bu yapı ile yapmak istiyorum ... –

cevap

3

Psuedo Kod aşağıda: Aşağıda

- (void)animateSideMenu{ 
homeView.frame = CGRectMake(sideMenuWidth, 0.0, (self.view.frame.size.width - sideMenuWidth), self.view.frame.size.height); 
[UIView animateWithDuration:1.0 delay:0.0 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 
        sideMenu.frame = CGRectMake(0.0, 0.0, sideMenuWidth, sideMenuHeight); 
        [self flipAnimation]; 
} completion:^(BOOL finished) { 

}]; 
} 

- (void)flipAnimation{ 
CABasicAnimation *yRotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; 
yRotate.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 1, 0)]; 
yRotate.toValue = @(M_PI * 1.5); 
yRotate.duration = 0.5; 
yRotate.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
[sideMenu.layer addAnimation:yRotate forKey:@"yRotate"]; 
} 

animasyon bu tür geliştirmek için adımlar şunlardır:

  1. ekran boyutu homeView (Kırmızı renk görünüm) çerçeve & için pan hareketi eklemek set bu manzara.
  2. Negatif x ekseninde sideMenu görünümünün çerçevesini ayarlayın.
  3. Pan jest tanıtıcısı için bir yanıtlayıcı işlevi oluşturun, bu işlevde yukarıda belirtilen animateSideMenu işlevini çağırın.
  4. Animasyon parametrelerini uygun şekilde ayarlayın.

Herhangi bir şey ortaya çıkarsa, bu & ile deneyin.

+0

@fahim, size yardımcı oldu mu? –

+0

şimdiki kontrol etme ... onun animasyonu yok –

+0

Yapmam gereken CABasicAnimation * yRotate = [CABasicAnimation animasyonuWithKeyPath: @ "transform.rotation.y"]; 'ancak bu sadece aradığım şey değil rotasyon yan menüsü. .. –

1

Ben bir "scroll view" kullanmam ama daha çok "pan offset" ini algılayabileceğim ve bu iki görünümün animasyonunun ve konumlarının geçerli bir kısmını hesaplayabileceğim bir UIPanGestureRecognizer kullanmıyorum (menünün view1 olması için basitleştirelim) kalan görünüm2). Ardından, .Changed durumunda uygun bir dönüşümü ayarlayacağım. In .Ended durumu Menünün açık mı yoksa kapanmaya yakın mı olduğunu ve buna göre .toValue ayarlı bir animasyon oluşturup oluşturmayacağını görüyorum. CAAnimations veya daha iyi - Facebook pop animasyonlarını kullanmanız gerekir çünkü bunları duraklatabilir ve kaldırabilir ve görünümler ilk konumlarına atlayabilir ve atlayabilir (genellikle UIViewAnimate'de olduğu gibi).

Tam kod yazarken yardıma ihtiyacınız varsa, buraya yazabilirsiniz ve cevabımı düzenleyeceğim. o Swift de olsa

+0

Ve kaydırma görünümünü gerçekten kullanmak isterseniz, scrollViewDidScroll kullanarak aynı değerleri ve kesirleri alabilirsiniz. –