iOS 类似虾米音乐侧滑动画解析(1)
来源:互联网 发布:国外linux软件网站 编辑:程序博客网 时间:2024/05/14 04:02
类似虾米音乐侧滑动画,董事长 高晓松 CEO宋柯 CCO 何炅。提倡收费,音乐分享,CD。
关于这种动画侧滑的实现方式,不少前辈大神已经做出了多种实现方式与讲解,而我在做阐述就显得相形见绌。分享前辈老师们做出的例子。
1、http://download.csdn.net/download/yuanxx321/6990925; RESideMenu库 http://blog.csdn.net/icetime17/article/details/46883915 简单理解RESideMenu;
2、https://github.com/yuyedaidao/YQSlideMenuControllerDemo; 讲解 http://www.jianshu.com/p/3a350bb9d9ee;
3、https://github.com/johnlui/SwiftSideslipLikeQQ; Swift版。
具体的实现demo可以下载以上例子进行学习参考,而我们也是做理解性的分析,在分析中寻求更多的思考与突破,寻求更好的算法。
分析,透过观看东西动画,可以看到两个view有着切换。暂定为上面内容的为contentView (A) ,下面菜单为menuView (B)。A视图有滑动手势,在滑动的过程中A的位置随滑动有不断的变化,而且大小也是有变化的。通过观察,我们可以确定这基本是线性变化的关系,那么怎么确定变化的比例值,既随着手势的滑动A视图的大小以及位置是怎么改变的。
我们找滑动的最终状态进行分析,找出线性的比例值。运用Mark Man测量最终状态A视图与屏幕视图的关系。这是4.7吋iPhone 6的屏幕,其分辨率是1334 * 750像素。
进一步的需要确定触摸移动距离与A视图位置大小的关系。
其中A视图左边界距到屏幕左边界的距离占整个屏幕的比例为(750 - 132)/ 750 = 0.8244; A的高度占整个屏幕为 (1334 - 118*2)/ 1334 = 0.8231;基于算法简单,我设定为常数c1、c2。将手指的移动距离设定为x,x作为变量,而因变量y为缩比率。有我们强大的数学功底,我们可以找出两个条件,解出y与x的关系。
所以,观察得到,当x = 0时,y = 1 ;x = c1 时 y = c2。由这个两个式子可以得出,y = ((c2 - 1)/ c1 ) *x + 1;(其中 c1 = 0.8244,c2 = 0.8231);A视图中心向右移动的距离和手指移动的距离相等。我们假设A与B视图,我们已经定义好,那么在基于y与x的关系,可以在contentView (A) UIPanGestureRecoginzer事件中,进行如下的算法与关系的操作。
- (void)panGestureRecognizer:(UIScreenEdgePanGestureRecognizer *)recognizer{
CGPoint point = [recognizertranslationInView:self.view];
if (recognizer.state ==UIGestureRecognizerStateBegan) {
//添加阴影,在http://www.jianshu.com/p/3a350bb9d9ee下载工程,YQSlideMenuController里有完整步骤,可参考。
}elseif(recognizer.state ==UIGestureRecognizerStateChanged){
float trueDistance = distance + point.x; //实时距离。
//计算上文提到的y与x的关系方法。
//平移与缩放的动画
A.view.center = CGpointMake(self.view.center.x + trueDistance,self.view.center.y); //中心点平移
A.view.transform =CGAffineTransformScale(CGAffineTransformIdentity,y,y); CGAffineTransformScale 缩放方法。
}elseif(recognizer.state ==UIGestureRecognizerStateEnded){
//根据位置做自动停靠,也可结合手势滑动的方向做自动停靠,
}
下一节对 menuView (B)的展示进行分析,并总结出整体流程。
- iOS 类似虾米音乐侧滑动画解析(1)
- iOS 类似虾米音乐侧滑动画解析(2)
- 虾米音乐解析教程.
- 虾米音乐解析器Qt版
- 虾米网音乐真实地址解析
- Java解析虾米音乐的真实下载地址
- 如何实现列表滑动标签置顶效果(以天天动听、网易云音乐、虾米音乐的歌手页为例)
- 类似ios滑动开关
- 虾米音乐下载工具
- Hadoop在虾米音乐
- 爬取虾米音乐
- 虾米音乐下载
- 使用虾米音乐生成虾米播播
- 仿虾米音乐引导页面
- Android仿虾米音乐播放器之通知栏notification解析
- 实现类似IOS中滑动按钮效果
- Android实现类似ios滑动按钮
- Android Project : FXiami 虾米音乐播放器
- 刷新(新闻)
- HoriziontalScroView
- 项目相关错误系列之eclipse中配置tomcat问题
- Java设计模式-命令模式Command
- Visual SLAM入门(一)
- iOS 类似虾米音乐侧滑动画解析(1)
- Spring mvc 拦截器 配置心得
- HDU 3790 最短路径问题
- iOS打包ipa步骤
- HTML常用标签
- Caused by: java.lang.OutOfMemoryError: Java heap space 异常处理和SVN提交更新不了
- 通信系统仿真
- java的图形界面
- 如何查找STM32开发资料