美文网首页
(GeekBand)iOS实战进阶开发第二周

(GeekBand)iOS实战进阶开发第二周

作者: ad951f2b2664 | 来源:发表于2016-09-18 00:47 被阅读32次

UIKit

动画在iOS开发中是非常常见的组成部分 能给用户带来一些有趣的用户体验 同时也能让用户更快的聚焦到App上来 以达到更好的展示效果 动画能很大程度上的提高用户对App的喜爱程度

iOS中的动画API

//最基础的动画API
 UIView animateWithDuration: animations:
//带有回调的动画API
UIView animateWithDuration: animations: completion:
//可设置动画效果的API
UIView animateWithDuration: delay: options: animations: completion:
//弹簧动画 iOS7以后大面积使用
UIView animateWithDuration: delay: usingSpringWithDamping: initialSpringVelocity: options: animations: completion:

-Duration:表示动画播放时长
-animations:将动画内容包括在里面
-delay:延迟多少时间以后播放动画
-options:设置动画属性 例如repeat EaseInOut之类
-completion:动画完成以后的回调 如果不需要则为nil
-usingSpringWithDamping:弹簧动画独有 表示阻尼 阻尼和弹簧的弹性成反比
-initialSpringVelocity:弹簧动画独有 表示初始速度 初始速度和弹簧的弹性成正比

iOS中可以动画形式呈现的属性有:

frame
bounds
center
alpha
transform
backgroundColor
centerStretch

同时 可以将动画写在ViewWillAppear中 避免view在load的时候就已经加载过动画 导致界面不正常或糟糕的用户体验

以alpha为例

//现将要以动画形式展现的label的alpha设置为0.0(完全透明 界面上没有显示)
- (void)viewDidLoad {
    [super viewDidLoad];
    self.locationLabel.alpha = 0.0;

}
//在view要出现的时候同时显示label以达到动画效果 EaseInOut是表示label显示速度递增 从慢到快的显示过程 
-(void)viewWillAppear:(BOOL)animated{
   [UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        self.locationLabel.alpha = 1.0;
    } completion:nil];
}

这样就完成了一个iOS中最简单的animation

附自己用swift实现的各类基础动画github地址:https://github.com/ThecoadeR/iOS-Animation-Swift-

View Transition

View Transition各个界面之间的专场动画 例如:小说App中的当前页翻到下一页

当前页面的subView修改
使用这个API好坏都显而易见 好处是他会将subView以一个snapshot image的形式加载 对性能的优化非常好 但是坏处就是 不可以做多余的修改 如果需要做多余的修改 则需要将option改成 UIViewAnimationOptionsAllowAnimatedContent(OC这么长的函数真是反人类 = =)


subview修改.png

View和View之间的替换
较多应用于场景变化 其实也就是show和Hide 不过反复加载对性能会是个负担


View之间切换.png

Core Animation

Core Animation是对layer层进行动画修改 能做的事比基础的UIKit动画多很多 功能也较为强大

对Layer的属性修改都会通过CATransaction然后提交 因此可以将所有的修改完成以后 一次性全部提交 不需要一个个单独提交


CATransaction.png

隐式动画
Core Animation会默认开启隐式动画 对CALayer层进行修改以后 就会触发动画 比如修改颜色 会自动出现过度颜色的动画

CALayer可动画的属性

非常多= =就不一一列举了。。


CALayer动画属性.png

网络编程

iOS中提供了一套原生的API(NSURLSession和NSURLConnection)
由于NSURLConnection已经被废弃 所以就不多说啦 各位老板见谅╮(╯▽╰)╭

NSURLSession的结构
首先构造一个NSURLSession对话 对话里头有config config可以配置缓存、各类Cookies(账号密码之类)、协议、签名 同时可以使用不同的设置 例如在ipv6或ipv4环境下运行
然后再纷发Task 一个NSURLSession可以有多个Task


NSURLSession结构.png

NSURLSession使用过程
1、根据Session选择NSURLSessionConfiguration(并不是alloc init构造)
2、配置config
3、用config创建Session

+[NSURLSession sessionWithConfiguration:delegat]
+[NSURLSession sessionWithConfiguration:]

4、用Session创建网络任务(也就是Task)
5、启动任务

-[NSURLTask resume]

NSURLSession类型

-全局(Default sessions)
最为广泛使用的一种session 文件缓存在系统中 在keychain中保存凭证
-私有(Ephemeral sessions)
数据缓存在内存里 同时数据只在session期间存在
-后台(Background sessions)
如有App需要在后台时还在运行(百度地图) 选择该类型 有专门的处理机制 其他的特点和Default sessions一致

Task类型

-Download Task
接收文件 支持后台下载
-Upload Task
上传文件
-Data Task
用NSData收发数据 适用于临时通讯

相关文章

网友评论

      本文标题:(GeekBand)iOS实战进阶开发第二周

      本文链接:https://www.haomeiwen.com/subject/typwettx.html