目录:

一、Core Animation

二、广播设计模式

回到顶部

一、Core Animation

1.  是什么?

底层的动画框架

2.  框架对比

UIKit           UI      UIView              AppKit          NS  NSView

(Cocoa Touch = UIKit + Foundation)          (Cocoa = AppKit + Foundation)

核心:让好看又能动的东西 在手机上和用户可以交互

OC级别:

+   UIControl/UIView子类

+   UITableView/UICollectionView

+   UIGestureRecognizer / UIView touch

Core Animation  CA      CALayer

(Quartz Core)

核心:让绘制出来的东西,变得更好看,或者动起来

C级别:

UIKit OC级别的简化类

+   UIView transform

+   UIView animate...

+   autoresizing

+   autolayout

Core Graphic    CG      CGContextRef

(Quartz 2D)

核心:绘制

C级别:线、填充颜色、文字、阴影、图像

UIKit OC级别的简化类

+   UIColor

+   UIBezierPath

+   NSString(UIKit)

3.  UIView vs CALayer

UIKit                   Core Animation

UIView                  CALayer

-> view.layer

addSubview              addSublayer

frame                   frame

autoreszing             autoreszing

transform 2D            transform 3D

animate                 animate 3D动画 颜色动画

增加一个圆角边

增加一个阴影

粒子效果

4.  Layer

1)  设置圆角

2)  遮罩/蒙板

3)  CATransform3D

内部 4x4 矩阵

- (void)viewDidLoad
{
[super viewDidLoad];
self.imageView.layer.cornerRadius = ;// 设置圆角
self.imageView.layer.masksToBounds = YES;// 遮罩/蒙板
CATransform3D transform = CATransform3DIdentity;
transform.m34 = - 1.0 / ;
transform = CATransform3DRotate(transform, M_PI_4, , , );//x轴旋转45度,x轴旋转45度 x y z轴
self.imageView.layer.transform = transform;
}

回到顶部

二、广播设计模式

概念:

0.生活中的广播,电视直播、收音机、商场、微博

1.什么是广播设计模式?一个对象不用知道消息的接收者是谁,就可以给这些需要消息的对象发消息

2.为什么会有这个模式?

1>有些情况下,发送消息的发送者无法预测接收者的存在和数量

2>有些情况下,消息的接收者和发送者距离太远

3.核心逻辑,发送者、收听者

1>收听者,打开收音机、收听广播,调频到和将来发送者频道一致

2>发送者发送一个广播,只要曾经打开收音机收听当前频道的收听者都能听到广播

3>收听者关闭广播

4.ios中对广播的实现

NSNotification                    一条通知

NSNotificationCenter     通知中心

步骤:[MX2]

1.收听者打开收音机收听广播

1>先找到通知中心

NSNotifecationCenter * center = NSNotifecationCenter defaultCenter

2>注册收听某主题的广播 addObeserver

2.发生者发送广播

1>找到通知中心

2>创建通知对象

3>发送 使用通知中心发送通知对象post

-(void)kaishi{

    // 找到通知中心

    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

    // 创建通知对象

    NSNotification *nofication = [NSNotification notificationWithName:@"WWDC" object:nil];

    // 发送 使用通知中心发送通知对象

    [center postNotification:nofication];

}

3.收听者处理收听

1>实现收听消息,处理逻辑

4.关闭广播,收听者不需要的时候停掉收听(必须要关)

1>找到通知中心

2>remove停掉收听

-(id)init{
self = [super init];
if (self) {
// 找到通知中心
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
// 注册收听某主题的广播
[center addObserver:self selector:@selector(jieshou:) name:@"WWDC" object:nil];
}
return self;
} // 处理收听
-(void)jieshou:(id)sender{
NSLog(@"jieshoudaole");
} // 停掉收听
-(void)dealloc{
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center removeObserver:self name:@"WWDC" object:nil];
}

5.通知中心发布信息时同时传送数据

// 创建通知对象
NSDictionary *data = @{@"Product": @"iPad Air"};
NSNotification *nofication = [NSNotification notificationWithName:@"WWDC" object:nil userInfo:data];
//收听这接收数据
-(void)jieshou:(NSNotification *)sender{
NSLog(@"%@",sender.userInfo[@"Product"]);
}

6.  内部机理

[G01]

7.  广播的同时传输数据

发送广播的时候 数据放在通知对象的userInfo下

接收广播的时候,第一个参数不是CCTV而是新闻(NSNotification)

接收的第一个参数就是发送者创建的通知对象

8.  字符串常量

.h

extern NSString * const XXXxxxXxxxxxxxx;

.m

NSString * const XXXxxxXxxxxxxxx = @".....";

9.  效果

消息接收者的增加

不会影响到现有消息发送者的代码

也不会影响到其它现有接收者的代码

10. 打开广播 / 关闭广播 必须必须配对

init                      - dealloc

viewDidLoad        - viewDidUnload / dealloc

viewWillAppear    - viewDidDisappear

viewDidAppear     - viewWillDisappear

选中VC在第四个检查器里,默认选中under top bars意思是该VC渗透在top bar的下面,取消则不渗透

18-UIKit(Core Animation、广播设计模式)的更多相关文章

  1. UIKit,Core Data , Core Graphics, Core Animation,和OpenGLES框架

    iOS的主要框架介绍   框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件.一个共享库定义的方法或函数可以被应用程序调用. IOS提供了很多你可以在应用程序 ...

  2. Cocoa Touch(三):图形界面UIKit、Core Animation、Core Graphics

    UIKit 视图树模型 1.视图树模型 计算机图形实际上是一个视图树模型,每个视图都有一个本地坐标系.每个本地坐标系的组成部分是:原点在父坐标系中的位置,每个基在父坐标系中的位置,由此就可以根据向量的 ...

  3. Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)

    前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...

  4. Core Animation编程指南

    本文是<Core Animation Programming Guide>2013-01-28更新版本的译文.本文略去了原文中关于OS X平台上Core Animation相关内容.因为原 ...

  5. iOS开发之Core Animation

    在IOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现,如果想实现更复杂的效果,则需要使用Core Animation了. 在Core Animation中我们经常使用的是 CABasi ...

  6. 老司机带你走进Core Animation

    为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...

  7. 关于Core Animation(转载部分内容)

    读者在浏览技术博客的时候,看到一篇关于Core Animation的介绍,觉得挺有用的,想分享给大家.原作者不知道是谁,嘿,所以就先不标注了,如有冒犯敬请原谅.不过笔者从中摘录部分内容分享一下. 其中 ...

  8. iOS——Core Animation 知识摘抄(四)

    原文地址http://www.cocoachina.com/ios/20150106/10840.html 延迟解压 一旦图片文件被加载就必须要进行解码,解码过程是一个相当复杂的任务,需要消耗非常长的 ...

  9. iOS——Core Animation 知识摘抄(三)

    原文地址:http://www.cocoachina.com/ios/20150105/10827.html CAShapeLayer CAShapeLayer是一个通过矢量图形而不是bitmap来绘 ...

随机推荐

  1. 在ASP.NET中动态加载内容(用户控件和模板)

    在ASP.NET中动态加载内容(用户控件和模板) 要点: 1. 使用Page.ParseControl 2. 使用base.LoadControl 第一部分:加载模板 下 面是一个模板“<tab ...

  2. 在TextBox里面仅仅允许数字,按Enter键进入下一个TextBox

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...

  3. C指针陷阱

    问题一: #include <stdio.h> int main(int argc, char *argv[]) { ]={ ,,,, }; ); printf(),*(p-)); ; } ...

  4. 「C」关键字、标识符、注释、内存分析、数据、常量、变量

    一.关键字 C语言提供的有特殊含义的符号,共32个. 一般在Xcode中关键字全部显示紫褐色,关键字全部都为小写.如int.return等. 二.标识符 标识符是程序员在程序中自定义的一些符号和名称. ...

  5. 调试带有源代码的DLL文件

    工作环境:dll源代码是c,在Visual studio 2010中调试. 第一步,调试的准备. 用C#语言编写一个测试dll文件的程序,由于dll源程序是c的,且运行结果是黑屏的,所以C#代码也是运 ...

  6. Hadoop平台安装前准备

    集群配置 准备工作 1.  Iptables #chkconfig iptables –list #chkconfig iptables –level 3456off #service iptable ...

  7. java.util.concurrent BlockingQueue

    BlockingQueue 它实现了Queue接口.它是A BlockingQueue with one thread putting into it, and another thread taki ...

  8. 深入浅出—JAVA(10)

    10.数字与静态 静态变量是共享的.同一类所有的实例共享一份静态变量. 实例变量:每个实例一个.静态变量:每个类一个. 数字的格式化 唯一必填的项目是类型 package xiao;class Sta ...

  9. IE6不支持<a>标签以外元素的hover的解决方案

    IE6以及更低版本的浏览器对“:hover”的支持不理想,对于类似的“p:hover”.“img:hover”.“#header:hover”...,今天给大家介绍一种新的方法,可以完美解决IE6不支 ...

  10. poco vs Boost

    Wooce Yang收集整理 POCO的优点: 1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级. 2) 比 boost:asio更全面的网络库.但是boost:a ...