应该是一个iOS的APP 求解mdzz是什么意思求解

没有更多推荐了,
不良信息举报
举报内容:
你可能需要为你的 App 适配 iOS 11
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!怎样做一个iOS App的启动分层引导动画?
招聘信息:
一. 为什么要写这篇文章?这是一个很古老的话题,从两年前新浪微博开始使用多层动画制作iOS App的启动引导页让人眼前一亮(当然,微博是不是历史第一个这个问题值得商榷)之后,各种类型的引导页层出不穷,到如今,github上也有了各种的成型的library存在供选择,同时不少app也已经慢慢的开始返璞归真回归单一静态引导页。虽然时尚的潮流不停的在变化,但是我一直在思索,这种多图层的启动引导动画到底是什么个结构?实现起来究竟有多难?本文,将试图探寻这个话题。二. 我们要做成什么样子的?首先定下目标,我们要实现的是启动引导画面中的一种——多层次动画。然后我们需要设定一个动画的主题,我们需要表达我们的情感,或者抒情~或者动人~或者逗比~。当然这大部分是设计师的工作。好吧,既然是demo,而我又不懂设计又不懂美学又不懂PS大法,那么,就大概也许做成一个这样子的把~~~总结一下最终目标要有几个要点:1、4个页。2、每个页都可能有若干分层,动画速度不同。3、整个滑动的手感应该是顺滑并且是页面式的。三. 用什么控件做?开头我讲过,这是要探索,而不是为了实现,所以绝对不能借助任何3rd的library来完成。最大限度的利用apple的原生控件,是解决问题之道。So,我们当然选用UIScrollView咯~~~除非你是个手工控。。。就要用最基本的UIView实现一个类似的滑动效果的UIScrollView。啥?你问我UIScrollView是啥?。。。。。。下面是UIScrollView的几个关键属性,我相信你是明白的。需要注意的是,伴随着scrollview的左右拖动,contentOffset是在一直变换的。数值范围:(0,0) – (320 * 3, 0)。而这个属性,是我们需要使用的关键数值。四. 怎么做?上面我啰嗦了半天,最后告诉大家要用UIScrollView做,那么问题来了,挖掘机技术哪家强?啊不,到底应该怎么做?下面是干货~1. 首先我们要把我们承载整个动画场面的scrollView造出来如下,需要设置scrollView的几个关键属性:frame, contentSize, alwaysBounceHorizontal, paginEnabled(这个如果是NO,那么页面间的弹性效果就没了), delegate(需要设置从而获取scrollview的滚动状态)等等。//初始化&scrollview
-&(void)initScrollView
&&&&CGSize&screenSize&=&[UIScreen&mainScreen].bounds.
&&&&_scrollView&=&[[UIScrollView&alloc]&initWithFrame:CGRectMake(0,&0,&screenSize.width,&screenSize.height)];
//我们的scrollView的frame应该是屏幕大小
&&&&_scrollView.contentSize&=&CGSizeMake(screenSize.width&*&4,&screenSize.height);
//但是我们希望我们scrollView的可被展现区域是4个屏幕横排那么大
&&&&_scrollView.alwaysBounceHorizontal&=&YES;//横向一直可拖动
&&&&_scrollView.pagingEnabled&=&YES;//关键属性,打开page模式。
&&&&_scrollView.delegate&=&
&&&&_scrollView.showsHorizontalScrollIndicator&=&NO;//不要显示滚动条~
&&&&[self.view&addSubview:_scrollView];
}现在我们已经准备好了动画的画布,下面开始将每一页的元素加上去。2. 加入页面元素还是不要全篇幅贴代码了,以第一页为例把。前面掉渣天的蛇鸡屎(我)的demo图已经表明,第一页,我们要有3个UILabel,一个UIImageView。那么好,这些元素我们就给他声明出来。@interface&ViewController&()&
@property&(strong,&nonatomic)&UIScrollView&*scrollV//这是基本!
@property&(strong,&nonatomic)&UIImageView&*girlImageV
@property&(strong,&nonatomic)&UILabel&*label_page1_1;
@property&(strong,&nonatomic)&UILabel&*label_page1_2;
@property&(strong,&nonatomic)&UILabel&*label_page1_3;
@end然后把第一页的元素,加进来~//为了更方便的初始化UILabel,我为UILabel增加了一个简易的类方法。是为了让代码更简洁可读。
+&(instancetype)labelWithText:(NSString&*)text&font:(UIFont&*)font&color:(UIColor&*)color&origin:(CGPoint)origin
&&&&UILabel&*label&=&[[UILabel&alloc]&initWithFrame:CGRectMake(origin.x,&origin.y,&1000,&20)];
&&&&label.text&=&
&&&&label.font&=&
&&&&label.textColor&=&
&&&&[label&sizeToFit];
&&&&return&
//然后我们将第一页的元素加进来。
&&&&self.label_page1_1&=&[UILabel&labelWithText:@"我要买iPhone6!"&font:[UIFont&systemFontOfSize:18.0f]&color:[UIColor&redColor]&origin:CGPointMake(140,&200)];
&&&&[self.scrollView&addSubview:self.label_page1_1];
&&&&self.label_page1_2&=&[UILabel&labelWithText:@"我要看医生演唱会~~~~"&font:[UIFont&systemFontOfSize:18.0f]&color:[UIColor&blackColor]&origin:CGPointMake(140,&240)];
&&&&[self.scrollView&addSubview:self.label_page1_2];
&&&&self.label_page1_3&=&[UILabel&labelWithText:@"我要去大理!"&font:[UIFont&systemFontOfSize:18.0f]&color:[UIColor&orangeColor]&origin:CGPointMake(140,&280)];
&&&&[self.scrollView&addSubview:self.label_page1_3];
&&&&self.girlImageView&=&[[UIImageView&alloc]&initWithImage:[UIImage&imageNamed:@"image_girl"]];
&&&&self.girlImageView.frame&=&CGRectMake(100,&kScreenHeight&-&200&-&50,&100,&200);
&&&[self.scrollView&addSubview:self.girlImageView];3. 让第一页动起来~~在第一页刚刚显示的时候,我们就希望第一页的元素能够有一个动起来的效果。那我们在上面刚刚加入第一页元素之后,可以紧接着做下面的事情:&&&&self.girlImageView.transform&=&CGAffineTransformMakeTranslation(-200,&0);
&&&&self.label_page1_1.transform&=&CGAffineTransformMakeTranslation(-&100,&0);
&&&&self.label_page1_2.transform&=&CGAffineTransformMakeTranslation(100,&0);
&&&&self.label_page1_3.transform&=&CGAffineTransformMakeTranslation(-&120,&0);
&&&&[UIView&animateWithDuration:0.7
&&&&&&&&&&&&&&&&&&&&&animations:^{
&&&&&&&&&&&&&&&&&&&&&&&&&self.girlImageView.transform&=&CGAffineTransformMakeTranslation(0,&0);
&&&&&&&&&&&&&&&&&&&&&&&&&self.label_page1_1.transform&=&CGAffineTransformMakeTranslation(0,&0);
&&&&&&&&&&&&&&&&&&&&&&&&&self.label_page1_2.transform&=&CGAffineTransformMakeTranslation(0,&0);
&&&&&&&&&&&&&&&&&&&&&&&&&self.label_page1_3.transform&=&CGAffineTransformMakeTranslation(0,&0);
&&&&&&&&&&&&&&&&&&&&&}];可以看到,我们分别给第一页的四个元素不同的水平位移,然后希望它用0.7秒的时间,移动到之前init他们时候的位置。这样就完成了第一个4层的错位动画。然后,我们希望在手指滑动scrollview 的时候,第一页的四个元素可以有相应的分层错位动画,那么我们第一需要拿到当前scrollView的位移量,也就是前面提到的很重要的contentOffset。这个值,在:-&(void)scrollViewDidScroll:(UIScrollView&*)scrollView中,可以实时的获取。具体来看,怎么做。-&(void)scrollViewDidScroll:(UIScrollView&*)scrollView
&&&&CGFloat&currentX&=&scrollView.contentOffset.x;
&&&&if&(currentX&<=&kScreenWidth)
&&&&&&&&self.girlImageView.transform&=&CGAffineTransformMakeTranslation((kScreenWidth&+&100.0f)&*&currentX&/&kScreenWidth,&0);
&&&&&&&&self.label_page1_2.transform&=&CGAffineTransformMakeTranslation(-&200&*&currentX&/&kScreenWidth,&0);
}呵呵,是不是看不懂,那就对了。。。下面解释下,首先抛出两个定理:定理一:在scrollview的滑动过程中,视觉上看,scrollview上的元素的移动方向与手指滑动方向相反,并且移动的距离与手指滑动的距离相等。但所有元素在scrollview上的物理位置并未改变。定理二:在scrollview的滑动过程中,当且仅当scrollview上的元素的物理移动距离与手指滑动距离相等并且移动方向相反时,scrollview的元素视觉位置保持不变。然后我们有两个需求:第一,希望那个小女孩跟随手指滑动的时候,视觉上不是向左移动一直到消失,而是向右移动,待滑动到第二页的时候,小女孩出现在屏幕右侧。我们应该明确,小女孩的移动,只能是在scrollview上位置的移动。根据定理二,我们知道,如果保持视觉上小女孩位置不变,小女孩在scrollView上的实际物理位移应该是:公式 4.3.1 baseDistance = kScreenWidth 屏幕宽度那么如果我们希望在移动到第二页之后,小女孩的视觉位置右移了100像素,那么小女孩在scrollView上的实际物理位移应该是:公式 4.3.2 distance = baseDistance + 100第一页到第二页,scrollView一共位移是 kScreenWidth ,当前scrollView位移是 contentOffset.x ,可以得出,当前位移的比例:公式 4.3.3 status = scrollView.contentOffest.x / distance由 4.3.1 4.3.2 4.3.3可得,我们设置小女孩位移的方式:self.girlImageView.transform&=&CGAffineTransformMakeTranslation((kScreenWidth&+&100.0f)&*&currentX&/&kScreenWidth,&0);第二个需求,希望第一页中,第二个label的向左移动速度快于其他两个label。根据定理二,和类似于上面的推倒(推导)方式,也易得第二个label的位移方式:self.label_page1_2.transform&=&CGAffineTransformMakeTranslation(-&200&*&currentX&/&kScreenWidth,&0);五. 总结综上所述,我们知道了分层动画的基本原理。如果使用更多的图层,更多的位移或者角度变化,就能组合出更加复杂的分层动画。可以看到,分层动画的基本原理并不复杂,但是为什么那么多人倾向于借助3rd的library来实现呢?一个字,懒。现如今移动开发领域对于美感和交互的要求越来越高,而开发出一款精美的app,设计师所需要付出的灵感和努力也越发显得重要。作为一个不怎么有美感的iOS工程师,想要在移动浪潮中立于不败之地,不断尝试更多新的可能远比实现更多的功能更加重要。最后的最后,附一个demo运行效果:
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量4556点击量2428点击量2074点击量2043点击量1885点击量1809点击量1738点击量1727点击量1654
&2018 Chukong Technologies,Inc.
京公网安备89没有更多推荐了,
不良信息举报
举报内容:
iOS APP上线 发布流程
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!主题 : 怎么在一个APP里面跳转到另一个APP啊?求老司机解答下具体思路?审核什么的会有要求吗?
级别: 侠客
UID: 511059
可可豆: 791 CB
威望: 607 点
在线时间: 150(时)
发自: Web Page
来源于&&分类
怎么在一个APP里面跳转到另一个APP啊?求老司机解答下具体思路?审核什么的会有要求吗?&&&
现在公司一个项目需要跳转到另外一个APP中使用另一个APP的支付功能(不是支付宝),使用完之后跳转回来,说是能提高APP的推广,但是不知道具体的跳转流程是什么样的?需要另一个APP授权什么的吗?怎样操作?
世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她。。。
级别: 版主
UID: 519631
可可豆: 1852 CB
威望: 1226 点
在线时间: 2119(时)
发自: Web Page
openURL...
级别: 侠客
UID: 511059
可可豆: 791 CB
威望: 607 点
在线时间: 150(时)
发自: Web Page
使用plist里面的URL地址什么的?还是接入另外一个APP的超链接?
世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她。。。
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版移动APP切图术语解读:什么是@1x @2x和@3x -25学堂
移动APP切图术语解读:什么是@1x @2x和@3x
现在很多APP设计师小白都会稀里糊涂的在解读这些缩放1倍,扩大2倍或者说扩大1.5倍 等等之类的言论。
大家谈论的却是也没有错。如果你搭配上的话,你的理解就有问题啦!
首先我们看下我们切图的命名方式:
假设有两张图片名为:正确的命名方式应该是这样test_t@2x.png 、test_t@3x.png
这是对于ios 切图来说的。
6是采用test_t@2x.png 这个图,iphone 6 plus就采用test_t@3x.png
但是对于iphone加载的顺序是
ipone5 s、iphone6和iphone6 plus都是不需要带上@2x/@3x的图片后缀名,程序会优先加载 @2x 的图片 ,但如果需要加载 @3x 的图片,你需要写上 @3x ; 这个是IOS客户端做的,但是作为APP设计师必须了解。
第一个:为解决ios分辨率而生
之所以有的出现,也是苹果为了便于程序员的开发,不同分辨率的设备开发时统一为一个尺寸。例如iPad2 是768 x 1024,iPad Retina 是1536 x 2048,开发时都按 768 * 1024 操作。但实际上两者有一倍差异。为了达到最佳效果,使用的图片大小不一样。这时候就用同一个名称,但 Retina 的图加上 @2x 后缀。系统加载图片时,在 iPad2 上会加载 @1x 的图在 1536 * 2048 的设备上,会加载 @2x 的。@3x 现在用于 iPhone 6/6+ 上。
第二个:也是xcode软件所需要的UI资源。你命好名称以后,ios会根据设备型号自动挑选合适的@1x,@2x或@3x尺寸来使用。
第三个:mac电脑上的APP设计软件Sketch,他切图之后保存的图片格式也是带有。
在这里 可以解毒@1x @2x和@3x为图片格式,成为图片后缀名。跟我们安卓上的.9.png 类似的。
第四个:苹果IOS程序开发不同分辨率的设备统一为一个尺寸而标记的。@3X就是@1X分辨率的3倍。@3x也是倍数的解读。
所以,在这里 安卓到底有没有这样的@1x @2x和@3x的格式呢。25学堂的小编认为,肯定没有,@1x @2x和@3x严格来说是苹果公司的专利。
适合安卓的切图命名规范最好的是.9.png图,当然目前.9.png应用在ios上也很多。
附带一提:iOS8渲染操作中使用前缀带有@1x、@2x 和@3x 的测试图像,代码会优先载入3x 图像。@2x图像不被加载。
0 个人已赞
你可能喜欢
使用社交账户登录}

我要回帖

更多关于 微分方程求解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信