2012-12-07 16 views
5

पर नियंत्रकों के बीच अच्छा ज़ूम-फीड संक्रमण हाल ही में अधिक से अधिक ऐप्स दृश्यों के बीच नए प्रकार के संक्रमण का उपयोग कर रहे हैं। इसे परिभाषित करना मुश्किल है लेकिन संक्रमण दृश्य दृश्य दिखने जैसा दिखता है, नीचे (नीचे की ओर अनुवाद) जा रहा है और थोड़ा सा स्केल कर रहा है - सभी एक साथ। यह वास्तव में सूक्ष्म और सुरुचिपूर्ण है।नए फेसबुक, जीमेल ऐप्स

आप फेसबुक ऐप में धीमी गति में इस संक्रमण को देख सकते हैं - दीवार पर किसी की तस्वीर ढूंढें, इसे देखने के लिए टैप करें और फिर पूर्णस्क्रीन छवि को धीरे-धीरे खींचें और आप देखेंगे कि दीवार पीछे की तरफ बढ़ रही है और थोड़ा सा स्केलिंग वह संक्रमण है। संक्रमण भी स्टेटसबार लुप्तप्राय envolves।

transition states

इस संक्रमण भी जीमेल 2.0 में मौजूद है जब आप बाएँ फलक से खुला सेटिंग्स।

मुझे लगता है कि इसके लिए एक निश्चित ढांचा या तैयार विधि है क्योंकि अधिक से अधिक ऐप्स इसे लागू कर चुके हैं। लेकिन शायद मैं भी गलत हूं क्योंकि मुझे संक्रमण के प्रक्षेपवक्र में कुछ ऐप्स में कुछ मामूली अंतर दिखाई देता है - उदाहरण के लिए। जीमेल थोड़ा कैरोसेल प्रभाव का उपयोग करता है, लेकिन फेसबुक सिर्फ बीच में स्केल करता है।

वैसे भी यह एक नई प्रवृत्ति प्रतीत होता है।

मैं कुछ संदर्भ या ढांचे की तलाश कर रहा हूं या इस तरह के संक्रमणों को लागू करने के बारे में जानता हूं।

किसी भी उपयोगी सामग्री के लिए धन्यवाद।

+0

मैं करूंगा अगर केवल पुस्तकालय था बग्गी – Heps

उत्तर

7

प्रयास करें इस बारे में सोच link.I इस बात कि वास्तव में आप https://github.com/kentnguyen/KNSemiModalViewController

+0

यह वास्तव में शानदार है! Thx – Heps

+0

यह वास्तव में अच्छा है! ठीक वही जो मेरे द्वारा खोजा जा रहा था। धन्यवाद! – Ajeet

3

मैंने पहली बार इसे राष्ट्रीय भौगोलिक ऐप्स में उपयोग किया था ... इन दो तरीकों से प्रयास करें, पहला 'इसे वापस छोड़ देता है' दूसरा 'इसे वापस लाता है'। यह अतीत में मेरे लिए अच्छा काम करता है, बस अपनी जरूरतों के अनुसार कुछ समायोजन करें।

- (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

सुपर फास्ट एन्शवियर के लिए धन्यवाद, मैं इसे आज़माउंगा और यदि यह काम करेगा तो मैं इसे एक समाधान के रूप में चिह्नित करूंगा और इस टिप्पणी को हटा दूंगा (यदि संभव हो तो हटाएं;) – Heps

+0

बिल्कुल वही जो मैं ढूंढ रहा था! सरल और साफ – Codezy

0

लिए देख रहे हैं मुझे लगता है कि आप इस लाइब्रेरी का प्रयास करना चाहिए है:

https://github.com/michaelhenry/MHFacebookImageViewer

+0

ठोस बात! thx – Heps

+0

ठीक से काम नहीं कर रहा है। बहुत सारी बग और दुर्घटनाएं। अच्छी अवधारणा लेकिन अभी भी काम की जरूरत है ... –

संबंधित मुद्दे