2012-12-07 18 views
5

Son zamanlarda daha fazla uygulama, görünümler arasında yeni geçiş türünü kullanıyor. Bunu tanımlamak zor ama geçiş önizleme görünümü soluyor, daha düşük (aşağı doğru çeviri) gidiyor ve biraz küçültüyor - hepsi de eşzamanlı olarak. Gerçekten ince ve zarif.Yeni Facebook'taki gibi denetleyiciler arasında güzel yakınlaştırma geçişi, Gmail uygulamaları

Yavaş çekimde bu geçişi Facebook uygulamasında görebilirsiniz - duvarda birinin resmini bulun, görüntülemek için simgesine dokunun ve tam ekran görüntüsünü yavaşça aşağı doğru sürükleyin ve duvarın arkadan sola doğru yükseldiğini fark edersiniz. biraz ölçekleme. Bu geçiş. Geçiş, ayrıca durum çubuğu solmasını da artırır.

transition states

Bu geçiş

da Gmail 2.0'da mevcut olduğunda sol bölmeden açık ayarlar.

Bunun için daha fazla uygulama uygulandığından, bunun için belirli bir çerçeve veya hazır bir yöntem olduğunu düşünüyorum. Ama belki de yanılıyorum çünkü geçişin yörüngesindeki bazı uygulamalarda küçük farklılıklar görüyorum - örn. Gmail biraz karusel efekti kullanır, ancak facebook sadece aşağı doğru ölçeklenir. Her neyse yeni bir trend gibi görünüyor.

Bu tür geçişleri uygulama konusunda bazı referans veya çerçeve veya teknik bilgi arıyorum.

İstediğiniz faydalı öğeler için teşekkürler.

+0

sadece kütüphane olsaydı yapardım değil buggy – Heps

cevap

3

Önce National Geographic uygulamalarında kullanıldığını gördüm ... bu iki yöntemle denemeye başladım, ilk önce 'geri çekiliyor' ikinci 'geri getiriyor'. Geçmişte benim için iyi çalıştı, ihtiyaçlarınızı karşılamak için birkaç ayar yap.

- (void)dropItBack:(id)sender 
{ 
    // Position 
    CABasicAnimation *posAnimation = [CABasicAnimation animationWithKeyPath:@"position"]; 
    posAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 284)];//center point 

    // Opacity 
    CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    opacityAnimation.toValue = [NSNumber numberWithFloat:0.5f]; 

    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    scaleAnimation.toValue = [NSNumber numberWithDouble:0.8]; 

    // Dramaticism of the Z rotation 
    // A lower number is more dramatic 
    float distance = 1000; 
    CATransform3D trans = CATransform3DIdentity; 
    trans.m34 = 1.f/-distance; 

    // Rotate Back 
    CABasicAnimation *rockBack = [CABasicAnimation animationWithKeyPath:@"transform"]; 
    rockBack.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(trans, M_PI_4, 1.f, 0.f, 0.f)]; 
    rockBack.beginTime = 0.f; 

    // Rotate forward 
    trans.m34 = 0.f; 
    CABasicAnimation *rockForward = [CABasicAnimation animationWithKeyPath:@"transform"]; 
    rockForward.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(trans, M_PI_4, -1.f, 0.f, 0.f)]; 
    rockForward.beginTime = 0.25f; 

    CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 
    animationGroup.duration = 0.5f; 
    animationGroup.repeatCount = 0.f; 
    animationGroup.removedOnCompletion = NO; 
    animationGroup.autoreverses = NO; 
    animationGroup.fillMode = kCAFillModeForwards; 
    animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    [animationGroup setAnimations:[NSArray arrayWithObjects:rockBack, rockForward, scaleAnimation, posAnimation, opacityAnimation, nil]]; 

    [self.navigationController.view.layer addAnimation:animationGroup forKey:nil]; 

    popsheet = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [popsheet setBackgroundColor:[UIColor blueColor]]; 
    [popsheet setFrame:CGRectMake(0, 580, 320, 400)]; 
    [popsheet addTarget:self action:@selector(bringItForward:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.tabBarController.view addSubview:popsheet]; 

    [UIView animateWithDuration:0.3 animations:^{ 
     [popsheet setFrame: CGRectMake(0, 180, 320, 400)]; 
    }]; 
} 

- (void)bringItForward:(id)sender 
{ 
    // Position 
    CABasicAnimation *posAnimation = [CABasicAnimation animationWithKeyPath:@"position"]; 
    posAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 284)]; 

    // Opacity 
    CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    opacityAnimation.toValue = [NSNumber numberWithFloat:1.f]; 

    // Scale 
    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    scaleAnimation.toValue = [NSNumber numberWithDouble:1.f]; 

    // Dramaticism of the Z rotation 
    // A lower number is more dramatic 
    float distance = 1000; 
    CATransform3D trans = CATransform3DIdentity; 
    trans.m34 = 1.f/distance; 

    // Rotate back 
    CABasicAnimation *rockBack = [CABasicAnimation animationWithKeyPath:@"transform"]; 
    rockBack.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(trans, M_PI_4, 1.f, 0.f, 0.f)]; 
    rockBack.beginTime = 0.f; 

    // Rotate forward 
    trans.m34 = 0.f; 
    CABasicAnimation *rockForward = [CABasicAnimation animationWithKeyPath:@"transform"]; 
    rockForward.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(trans, M_PI_4, -1.f, 0.f, 0.f)]; 
    rockForward.beginTime = 0.25f; 

    CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 
    animationGroup.duration = 0.5f; 
    animationGroup.repeatCount = 0.f; 
    animationGroup.removedOnCompletion = NO; 
    animationGroup.autoreverses = NO; 
    animationGroup.fillMode = kCAFillModeForwards; 
    animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    [animationGroup setAnimations:[NSArray arrayWithObjects:posAnimation, rockBack, rockForward, opacityAnimation, nil]]; 

    [self.navigationController.view.layer addAnimation:animationGroup forKey:nil]; 
    [UIView animateWithDuration:0.3 animations:^{ 
     [popsheet setFrame: CGRectMake(0, 580, 320, 400)]; 
    }]; 

} 
+0

Süper hızlı cevap için teşekkürler, ben deneyeceğim ve eğer işe yarayacaksa bunu bir çözüm olarak işaretleyeceğim ve bu yorumu kaldıracağız (eğer mümkünse;) – Heps

+0

Tam olarak aradığım şey! Basit ve temiz – Codezy

0

aradığınız şey bu kütüphaneyi denemek gerektiğini düşünüyorum olduğunu düşünüyorum link.I deneyin:

https://github.com/michaelhenry/MHFacebookImageViewer

+0

Katı şey! thx – Heps

+0

düzgün çalışmıyor. çok sayıda hata ve çöküyor. Güzel bir konsept ama yine de işe ihtiyacım var ... –

İlgili konular