- 浏览: 84430 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
原帖地址:http://www.cnblogs.com/shangdahao/archive/2013/06/04/3116731.html
源码地址:https://github.com/thermogl/TISpringLoadedViews,
这个比较复杂,我写了个简化版的:
https://www.dropbox.com/s/sv3yhm8dovh0adq/SpringDemo.zip
- (void)simulateSpringWithDisplayLink:(CADisplayLink *)displayLink {
if (springEnabled && !self.panning){
CGPoint displacement = CGPointMake(self.center.x - restCenter.x,
self.center.y - restCenter.y);
//控件收到的力
CGPoint kx = CGPointMake(springConstant * displacement.x, springConstant * displacement.y);
//控件受到的阻力
CGPoint bv = CGPointMake(dampingCoefficient * velocity.x, dampingCoefficient * velocity.y);
//加速度
CGPoint acceleration = CGPointMake((kx.x + bv.x) / mass, (kx.y + bv.y) / mass);
velocity.x -= (acceleration.x * displayLink.duration);
velocity.y -= (acceleration.y * displayLink.duration);
//设置控件新位置
CGPoint newCenter = self.center;
newCenter.x += (velocity.x * displayLink.duration);
newCenter.y += (velocity.y * displayLink.duration);
[self setCenter:newCenter];
}
}
这个方法由CADisplayLink负责调用,每秒钟默认60次。要看懂这段代码,首先你要了解弹簧的原理,比如拉起弹簧收到的力怎么计算,往回弹收到的阻力怎么计算。
下面是手势操作的代码,也就是拖动时触发的方法:
- (void)viewWasPanned:(UIPanGestureRecognizer *)sender {
CGPoint translation = CGPointApplyAffineTransform([sender translationInView:self.superview], CGAffineTransformMakeScale(panDragCoefficient, panDragCoefficient));
CGPoint translatedCenter = CGPointMake(self.center.x + translation.x, self.center.y + translation.y);
if (translation.x > 0 && (translatedCenter.x - restCenter.x) > panDistanceLimits.right){
translation.x -= (translatedCenter.x - restCenter.x) - panDistanceLimits.right;
}
else if (translation.x < 0 && (restCenter.x - translatedCenter.x) > panDistanceLimits.left){
translation.x += (restCenter.x - translatedCenter.x) - panDistanceLimits.left;
}
if (translation.y > 0 && (translatedCenter.y - restCenter.y) > panDistanceLimits.bottom){
translation.y -= (translatedCenter.y - restCenter.y) - panDistanceLimits.bottom;
}
else if (translation.y < 0 && (restCenter.y - translatedCenter.y) > panDistanceLimits.top){
translation.y += (restCenter.y - translatedCenter.y) - panDistanceLimits.top;
}
[self setCenter:CGPointMake(self.center.x + translation.x, self.center.y + translation.y)];
[sender setTranslation:CGPointZero inView:self.superview];
}
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1073原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1134原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 624原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 475原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 597原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 560原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 560原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 526原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 497原帖地址:http://www.cnblogs.com/nok ... -
使用Func<T1, T2, TResult> 委托返回匿名对象 - 灰身
2013-06-26 13:54 801原帖地址:http://www.cnblo ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 788原帖地址:http://www.cnblogs.com/yex ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 10:27 624原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 568原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 612原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 840原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 956原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 413原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 676原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 671原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 504原帖地址:http://www.cnblogs.com/had ...
相关推荐
本教程将深入探讨如何在iOS应用中实现弹簧效果的动画,这种效果通常用于模拟真实世界中的弹性运动,如按钮按下、页面滑动等场景。苹果的UIKit框架提供了一种强大的工具——Core Animation,可以轻松实现此类动画。 ...
通过深入研究“SpringScrollView-master”项目,开发者不仅可以学习到如何在非iOS平台上实现弹簧效果,还能理解动画原理、自定义视图组件以及事件处理等方面的知识,从而提升自己的移动应用开发技能。
总之,"ios-UIView添加弹簧效果.zip"包含了一个使用iOS UIKit实现的弹簧动画示例,它涵盖了自定义UIView、添加动画效果、显示文本内容以及控制动画执行次数等知识点。对于想要提升应用动画质量的iOS开发者来说,这是...
本文将对iOS中的各种动画效果进行详细的总结,并探讨实现这些效果的不同途径。 首先,我们来看iOS中最基础的动画类型:Core Animation。Core Animation是Apple提供的一套强大的2D图形渲染和动画框架,它允许开发者...
以下是关于“ios动画效果”的详细知识点: 1. **Core Animation**: iOS中的动画主要基于Core Animation框架,这是一个底层技术,负责处理2D图形渲染。通过Core Animation,开发者可以创建平滑、高性能的动画,包括...
在iOS开发中,为了提供更好的用户体验,开发者们经常会在用户交互时添加各种动画效果,其中“下拉列表弹簧动画”是一种常见的动态效果,它模仿了真实世界中的物理弹性,为界面增加了一种生动且自然的感觉。这个动画...
android 仿ios 弹簧效果,带阻尼
通过以上步骤,你就可以在自己的应用中实现类似“iOS tableview头部弹簧效果”的功能。CDTableViewHeaderDemo这个压缩包文件很可能是包含了实现这一效果的示例代码,你可以下载并学习其中的实现方式。
"iOS动画-animation1"可能是一个关于如何在iOS应用中创建和使用基本动画的教程或项目示例。在这里,我们将深入探讨iOS动画的基础知识,包括Core Animation、UIView动画以及CAAnimation的相关概念。 1. **Core ...
学习关键帧动画、弹簧动画和路径动画的实现方法。 3. **时间线与速度控制**:掌握如何自定义动画的时间曲线,使用CADisplayLink和CAAnimationGroup来精确控制动画的播放速度和同步。 4. **图层合成**:学习如何...
8. **Spring动画**:iOS中的Spring动画模拟了真实世界中弹簧的物理效果,提供了一种平滑且自然的回弹动画。通过设置spring的阻尼和初始速度,可以创建各种不同的回弹效果。 9. **CAReplicatorLayer**:这个图层可以...
《Swift中的iOS动画集合库——Spring深度解析》 在iOS应用开发中,动画效果往往能够提升用户体验,使得交互更加生动有趣。"实用,易用的 iOS 动画集合库.zip" 提供了一个名为Spring的开源项目,专为Swift开发者设计...
"swift-iOS动画库的精选列表"是一个汇集了优秀Swift动画库的资源集合,旨在帮助开发者们在项目中引入高质量的动画效果。 首先,我们要了解Swift中的动画基础。Swift内置了UIKit框架,其中`UIView`类包含了基本的...
"ios 动画 时钟 波浪"这个主题涉及了三个核心概念:iOS平台上的动画实现、时钟动画以及波浪效果。下面将详细阐述这三个方面的知识。 首先,我们来探讨iOS中的动画。iOS提供了两种主要的动画实现方式:Core ...
在iOS开发中,Core Animation是苹果提供的一项强大的技术,用于创建复杂的动画效果和图形渲染。这份资源"iOS Core Animation (Advanced Techniques) - English.pdf.zip"显然是一部关于Core Animation高级技术的英文...
本教程以"iOS动画小demo"为主题,将深入探讨如何在iOS应用中实现简单且实用的动画,尤其是如何在UITableView的Cell中添加动画效果,以及如何在用户交互下控制动画的展示。 首先,我们要了解iOS中的动画基本原理。...
在Android开发中,为了提供与iOS类似的用户体验,开发者经常需要实现一些特定的动画效果,比如弹簧效果的左右滑动交互。这个"Android-类似 iOS 带弹簧效果的左右滑动控件"就是一个专为此目的设计的库,它可以被集成...
在iOS开发中,实现抽屉动画通常用于创建滑动式导航菜单或侧边栏效果,让用户可以像拉开抽屉一样从屏幕边缘滑出一个视图。`CGAffineTransform`是Core Graphics框架的一部分,它允许开发者对 UIView 或CALayer进行平移...
"awesome-ios-animation" 是一个专门收集iOS动画相关资源的存储库,为开发者提供了丰富的动画实现示例和库。这个存储库的目标是帮助iOS开发者更好地理解和运用动画技术,提升应用程序的视觉效果。 首先,我们来探讨...