IOS之UIKit_Day21

  Day21

回顾:

1 Core Animation

          CA上面是UIKit

          CA的下边是Core Animation

2. 针对Core Animation编程

          针对CALayer编程,通过UIViewlayer属性达到CALayer的对象

          通过LAyer属性可以做效果

          a.圆角

          b.添加子视图

          c.设置背景色阴影

          d.使用CABasicAnimation实现动画的步骤:

          step1:创建动画对象使用构造方法时,传入的是一个固定的字符串------position 位移   transform 旋转   opacity 变形

          step2:设置属性 FormValue  ToValue

          step3:将动画效果注册到一个子视图对象的Layer层中

     e.针对CALayer做变形时,特别是旋转动画,可以是3D的变形分别绕X Y Z 三个轴进行旋转,同时需要使用一组特有的函数。

          CATransform3DMakeXXX或者是没有make 的那组函数

 3. UIKit Dynamic

          3.1 UIDynamic Animation描述力场

          3.2 行为:UIGravityBehavior 重力行为

                            UICollectionBehavior碰撞

                            UIAttachmentBehavior吸附行为

                            UISnapBehavior闪烁

 

今天:

1. 在设置吸附的时候可以设置吸附行为的频率

          //设置吸行为的频率

    self.attachmen.frequency=1; 值越大橡皮筋越短

     //设置吸附行为的阻尼(弹性系数)

     self.attachmen.damping=0.1;

          1.4 闪烁行为:UISnapBehavior

          1.5 推力行为:UIPushBehavior

2. 弹簧效果的短消息

          思路:利用手指移动的距离,以及item离手指点的位置的远近,产生一个变化的值,使用这个值来修改所有CollectionView中的item的锚点

     步骤:

                   step1:首先计算scroll的距离SCrollDelta

                   step2:为了得到每个item与触摸的点的之间的距离,需要直到触摸点的坐标touchLocation

                   step3:可以根据距离对每个锚点进行设置了,简单计算出来原来锚点与触摸点之间的距离distanceFromTouch并计算一个系数

                   step4:接下来,对于当前的item 我们要是、获取其当前锚点的位置,然后将其根据scrollDelta的系数和刚才计算的系数,重新设定锚点的位置。

                   step5:最后需要告诉UIDynamicAnimation已经完成了对完成了对锚点的更新,现在可以开始跟新位置,并随时准备collectionView取得LayoutAttibutes的收据了

 

3. 通知(notification

          3.1 是什么?

          是一个观察这模式的具体现

          观察着模式:对一个对象A想直到另一个B状态是否发生了改变,思路是在B 对象上注册一个观察着,当对象B的状态发生改变时,通知对象A 对象A收到通知后进行的处理的一种模式。

          其中观察着模式的一种解决方案叫做----------广播

          系统中的通知就是广播的一种体现

3.2 好处:

                   一个对象不需要知道消息的接受者是谁,就可以将一些消息发送给需要的接受者。

                   有时发送消息的对象无法知道那些对象,有多少对象接受消息,也不知道对象是否存在。

                   有时消息的接受着和发送或太远(远  是指不是具体的  是关系如控制器和视图就是近但是Model离控制器就是远)

          3.3

                   1》接收者:找到通知中心

                   NSNotificationCenter,注册要收听的一个具体频道addObserver

                   2>发送者:找到通知中心,创建通知对象(NSNotification)使用通知中心来发送这个消息(postNotification

                   3》接受者 收到消息  处理消息(掉方法)

                   4》停止收听 不需要收听时,找到通知中新  注册removeObserver

          3.4 关键的类

                   NSNotificationCenter  是一个单例类,使用defaultCenter方法永远返回同一个对象,以此保证中心对象只有一个

                   NSNotification通知类(封转通知的内容等信息)

 

4 键盘通知

          键盘弹起的通知名称:

                   UIKeyboardWillShowNotification

          键盘收起的通知名称

                   UIKeyboardWillHideNotification

 

时间: 2024-10-25 19:10:46

IOS之UIKit_Day21的相关文章

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

使用fruitstrap实现命令行将IPA包安装到iOS设备上

Requirements Mac OS X. Tested on Snow Leopard only. You need to have a valid iPhone development certificate installed. Xcode must be installed, along with the SDK for your iOS version. Usage fruitstrap [-d] -b <app> [device_id] Optional -d flag laun

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

iOS证书说明和发布

1.首先通过钥匙串访问——证书助理——从证书颁发机构请求证书——填写证书信息(邮箱,常用名称,存储到磁盘)——存储为(自定义名称.certSigningReuqest,简称CSR文件,只是为了提交到苹果开发者账号中,然后就没用了)到本地 2.苹果开发者账号中,创建证书(Development和Production)——上传CSR文件——下载证书运行 ( xxx.cer文件) 注意:只有在当前电脑中生成本地生成证书,上传到苹果开发账号,然后下载cer文件运行后,钥匙串中才有证书以及对应的秘钥 如果

iOS开发——项目实战总结&amp;UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

解决ios下的微信打开的页面背景音乐无法自动播放

后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监听这个事件来触发的.那有个坑就是 如果微信已经ready了,但还没执行到你监听这个ready事件的代码,那么你的监听是没用的,所以最理想的情况是,监听的js放在head前面(放在css外链之前),确保最新执行,切记!切记!. ·另一个坑就是,本文的解决方案只适合一开始就播放的背景音乐.如果你是做那种

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

iOS库--.a与.framework

一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存. 三.iOS里静态库形式? .a和.framework 四.iOS里动态库形式? .dylib和.framework 五.framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建立的.fram