- (void)animateSnapshotOfView:(UIView *)view toTab:(UINavigationController *)navController { NSUInteger targetTabIndex = [self.tabBarController.viewControllers indexOfObject:navController]; NSUInteger tabCount = [self.tabBarController.tabBar.items count]; // AFAIK there's no API (as of iOS 4) to get the frame of a tab bar item, so guesstimate using the index and the tab bar frame. CGRect tabBarFrame = self.tabBarController.tabBar.frame; CGPoint targetPoint = CGPointMake((targetTabIndex + 0.5) * tabBarFrame.size.width / tabCount, CGRectGetMidY(tabBarFrame)); targetPoint = [self.window convertPoint:targetPoint fromView:self.tabBarController.tabBar.superview]; UIGraphicsBeginImageContext(view.frame.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGRect frame = [self.window convertRect:view.frame fromView:view.superview]; CALayer *imageLayer = [CALayer layer]; imageLayer.contents = (id)image.CGImage; imageLayer.opaque = NO; imageLayer.opacity = 0; imageLayer.frame = frame; [self.window.layer insertSublayer:imageLayer above:self.tabBarController.view.layer]; CGMutablePathRef path = CGPathCreateMutable(); CGPoint startPoint = imageLayer.position; CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y); CGPathAddCurveToPoint(path,NULL, startPoint.x + 100, startPoint.y, targetPoint.x, targetPoint.y - 100, targetPoint.x, targetPoint.y); CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; positionAnimation.path = path; CGPathRelease(path); CABasicAnimation *sizeAnimation = [CABasicAnimation animationWithKeyPath:@"bounds.size"]; sizeAnimation.fromValue = [NSValue valueWithCGSize:imageLayer.frame.size]; sizeAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(50, 50)]; CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; opacityAnimation.fromValue = [NSNumber numberWithFloat:0.75]; opacityAnimation.toValue = [NSNumber numberWithFloat:0]; CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; animationGroup.animations = [NSArray arrayWithObjects:positionAnimation, sizeAnimation, opacityAnimation, nil]; animationGroup.duration = 1.0; animationGroup.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; animationGroup.delegate = self; [animationGroup setValue:imageLayer forKey:@"animatedImageLayer"]; [imageLayer addAnimation:animationGroup forKey:@"animateToTab"]; }
来源:http://stackoverflow.com/questions/6915702/creating-itunes-store-style-jump-animation
相关推荐
bounce_count :小球弹跳次数 ball_color:小球颜色 ball_count:小球数量 ball_radius:小球半径 ball_delay:小球出现时间间隔(当小球数大于1时) anim_duration:小球一次动画时长 physic_mode : 开启物理效果(下落...
MRCircularProgressView, 自定义循环 UIView,允许设置类似于 AppStore 控件的进程 MRCircularProgressView自定义循环 UIView,允许设置类似于 AppStore 控件的进程。 API参考自定义动画持续时间。自定义颜色。...
这允许我们控制视图控制器的出现和消失动画,从而实现与AppStore类似的页面切换效果。 7. **Page Control**: 为了指示当前屏幕位置,AppStore通常会使用UIPageControl。这是一个简单的控件,显示为一系列小圆点,...
标题中的“swift-react-native-app-store-review”指的是一个项目或库,它是用React Native框架实现的,目的是在iOS应用中提供类似Apple App Store的用户评分功能。React Native是一种由Facebook开发的开源...
AXURE App控件库是为原型设计工具AXURE专门设计的一组移动应用相关的交互控件集合。这个控件库极大地方便了设计师在构建移动应用原型时的工作,提供了丰富的预设组件,使得设计师无需从零开始创建每一个元素,从而...
- `VPathBox`控件可能会有一个`PathSelected`或类似的事件,当用户选择了一个新的路径并关闭对话框时触发,使得父窗体或其他订阅此事件的对象可以响应路径的变化。 - `Click`事件处理程序可能会负责打开文件选择...
在本文中,我们将深入探讨如何使用C#语言创建一个控件交互动画插件,以及该插件的主要功能和应用场景。C#是一种广泛应用于Windows桌面应用、游戏开发和Web服务的强大编程语言,其丰富的库和面向对象的特性使得创建...
总的来说,"仿AppStore获取应用按钮"是一个结合了GDI+绘图技术和进度条功能的自定义控件,它的设计考虑了视觉效果和用户体验,是软件界面设计中一个实用且有创意的实践。通过理解其工作原理和使用方法,开发者可以在...
标题中的"anigif.ocx_downcc_动画_wincc动画控件_"暗示了这是一个与Windows Control Center(简称WINCC)相关的动态图形控件,特别是用于创建动画效果的组件。"anigif.ocx"是核心文件,它是一个ActiveX控件,通常...
App Inventor 创意编程软件的安装和使用 App Inventor 是一个基于 Blocks 编程语言的可视化编程环境,它允许用户使用拖曳式编程来创建 Android 应用程序。下面是关于 App Inventor 软件的安装和使用的详细介绍。 ...
通过这个MFC动画控件的应用实例,我们可以学习到如何在MFC环境中集成和管理动画,提高软件的视觉吸引力。无论是在桌面应用程序还是嵌入式系统中,掌握这一技巧都能让你的程序更加生动活泼。实践是检验真理的唯一标准...
在IT领域,遇到“金格控件未安装”的问题时,通常意味着在使用特定软件或网页应用时,系统缺少必要的ActiveX控件支持,导致功能受限或无法正常使用。本文将详细解析这一问题,并提供解决方案,确保用户能够顺利运行...
### C++Builder控件安装指南 #### 一、概述 本文档旨在为用户提供关于如何在C++Builder中安装各类第三方控件的详细指导。通过这些控件,开发人员能够极大地扩展应用程序的功能,并提升用户界面的设计水平。根据...
在BCB(Borland C++ Builder)环境中,显示GIF动画的功能可以通过安装特定的控件来实现。本篇文章将深入探讨如何在BCB中集成和使用这个控件,以及相关的编程技巧。 首先,GIF动画是一种流行的格式,它支持多帧图像...
C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的...
5. **按行显示**:描述中提到的“按行显示内容”可能是指星星的排列方式,可以是按照一定的网格或线条分布,或者是让星星按特定路径移动,形成类似流星雨的效果。 6. **优化性能**:大量绘制操作可能会降低性能,...
WPF 中 Image 控件 Source 属性的相对路径和绝对路径问题总结 在 WPF 中,Image 控件的 Source 属性可以指定为相对路径或绝对路径,但这两种路径有不同的使用场景和注意事项。本文将总结 WPF 中 Image 控件 Source ...
### DevExpress系列控件安装教程详解 #### 一、前言 DevExpress是一家专注于为.NET平台提供高质量、高性能的UI控件的公司。其产品被广泛应用于Windows Forms、ASP.NET、WPF等多个开发领域。然而,DevExpress控件的...
在给定的“labview控件4套+页面加载动画.rar”资源中,包含了四套不同的LabVIEW控件和一个页面加载动画的示例,这些都旨在帮助开发者提升界面美观度、提高开发效率,并提供更好的用户体验。 1. **自定义控件**:在...
安卓app开发项目-数字标识控件(源码).zip安卓app开发项目-数字标识控件(源码).zip安卓app开发项目-数字标识控件(源码).zip安卓app开发项目-数字标识控件(源码).zip安卓app开发项目-数字标识控件(源码).zip安卓app...