iOS基础知识汇总(一)

一、通知

1.监听通知

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;

当anObject对象发布一条名字叫做aName的通知时,就会调用observer的aSelector方法

2.发布通知

// 发布一个通知对象(name、object、userInfo)

- (void)postNotification:(NSNotification *)notification;

// anObject发布了一个名字叫做aName的通知

- (void)postNotificationName:(NSString *)aName object:(id)anObject;

// anObject发布了一个名字叫做aName的通知,并且传递了一个额外数据:aUserInfo

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;

二、从storyboard里面加载控制器

1.加载storyboard

1> 方法1:利用storyboard文件的名字

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;

2> 方法2:控制器的storyboard方法

- [UIViewController storyboard]

2.加载控制器

// 返回第一个控制器(初始化控制器,箭头所指的控制器)

- (id)instantiateInitialViewController;

// 返回唯一标识是identifier的控制器

- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;

三、block的定义格式

1.block变量的定义

void (^myblock)(int, int);

myblock = ^(int a, int b) {

};

int age = 10;

2.@property的定义

@property (nonatomic, copy) void (^myblock)(int, int);

@property (nonatomic, assign) int age;

3.当做方法的参数

- (void)setMyBlock:(void (^)(int, int))myblock;

- (void)setAge:(int)age;

四、CGRect常见函数

1.CGRectGetMinX(CGRect rect) 等函数

2.CGRectContainsPoint(<#CGRect rect#>, <#CGPoint point#>)

五、UIImage的裁剪

CGImageCreateWithImageInRect(<#CGImageRef image#>, <#CGRect rect#>)

六、消除锯齿

- (void)clearAlias

{

self.layer.borderWidth = 2;

self.layer.borderColor = [UIColor clearColor].CGColor;

// 就会把图层当做是一个bitmap来渲染

self.layer.shouldRasterize = YES;

for (UIView *child in self.subviews) {

[child clearAlias];

}

}

七、计时器

1.NSTimer

1> 人为控制刷新频率

2> 对刷新速度要求不高,适合慢刷新

3> 创建timer

// 返回一个新的timer,但是不会开始计时,需要调用fire方法

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

// 返回一个新的timer,会马上开始计时

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

4> 停止计时器(只要计时器停止了,以后不能再次开始计时)

- (void)invalidate;

2.CADisplayLink

1> 包含QuartzCore框架

2> 固定刷新频率(1秒钟刷新60次)

3> 对刷新速度要求高,适合快刷新

4> 创建displaylink

// 返回一个CADisplayLink计时器对象,1秒内会调用60次target的sel方法,并且将CADisplayLink当做参数传入

+ (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;

5> 开始计时

- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSString *)mode;

6> 停止计时

- (void)invalidate;

7> 刷帧间隔

@property(readonly, nonatomic) CFTimeInterval duration;

8> 控制暂停或者继续

@property(getter=isPaused, nonatomic) BOOL paused;

八、动画

1.UIView封装的动画

1> 首尾式

[UIView beginAnimations:nil context:nil];

// ... 需要执行怎样的动画

[UIView commitAnimations];

2> block

[UIView animateWithDuration:0.5 animations:^{

// 需要执行的动画

} completion:^(BOOL finished) {

// 动画完成

}];

3> 转场动画(过渡动画)

// 让某个view执行转场动画

[UIView transitionWithView:<#(UIView *)#> duration:<#(NSTimeInterval)#> options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>];

2.CALayer的动画

// CABasicAnimation和CAKeyframeAnimation的keyPath可以是哪些值?

// 在xcode文档搜索:CALayer Animatable Properties

// transform的具体属性:搜索catransform3d key path

1> CABasicAnimation

* fromValue  初始值

* toValue  最终值  (从初始化变化到最后某一个值)

* byValue  步进值  (在初始值的基础上,增加多少值)

2> CAKeyframeAnimation

* values

3> CATransition(转场动画)

CATransition *anim = [CATransition animation];

anim.type = @"cube";

anim.subtype = kCATransitionFromBottom;

[view.layer addAnimation:anim forKey:nil];

4> CAAnimationGroup

* 动画,可以同时执行多个动画

3.如何选择动画

1> 如果需要重复执行多次动画,最好选择CALayer动画

2> 如果动画执行完毕后,就要用到前面的一些东西,最好选择UIView的block动画

3> 如果需要同时执行多个动画,最好选择CAAnimationGroup

4> UIView动画和CALayer动画中最灵活的是CALayer的动画

4.自定义一些动画

用CADisplayLink,在刷帧方法完成需要执行的动画

时间: 2024-10-25 10:52:30

iOS基础知识汇总(一)的相关文章

Delphi基础知识汇总

☆Delphi基础数据类型 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 Shortint -128 .. 127 1 有符号8位 Smallint -32768 .. 32767 2 有符号16位 Longint -2147483648 .. 2147483647 4 有符号32位 Int64 -263 .. 263 8 有符号64位 Byt

PB编程基础知识汇总

PB编程基础知识汇总 第一章      1.  程序的开始,application的open事件. 退出程序例程:halt为退出函数 int SureQuit SureQuit = 2 SureQuit=Messagebox("退出系统","退出前请确认已保存好数据",Question!,OKCancel!, 2) if SureQuit = 1 then halt 2.  变量定义有效范围: ◎     declare-globe 全局变量,整个程序均有效 ◎  

沉淀,再出发:Java基础知识汇总

沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的语法,对象的定义,类.接口.继承.静态.动态.重载.覆盖这些基本的概念和使用方法,到稍微高级一点的多线程,文件读写,网络编程,GUI使用,再到之后的反射机制.序列化.与数据库的结合等高级一点的用法,最后将设计模式应用其中,产生了一个个新的概念,比如Spring.Spring MVC.Hibernat

C++ 基础知识汇总 持续更新

摘录一些C++面试常考问题,写一些自己的理解,欢迎来摘果子. static关键字 用于声明静态对象: 静态函数只在本文件可见.(默认是extern的) 全局静态对象:全局静态对象,存储在全局/静态区,作用域整个程序,在程序结束才销毁: 局部静态对象:在函数内部加上static声明的变量,在首次调用时初始化,然后一直驻留在内存,作用域是该函数,可用于函数调用计数(primary有例子),程序结束释放: 静态数据成员:归属于类,类对象共享,类外初始化,类对象可访问: 静态函数成员:归属于类,只能访问

go语言基础知识汇总

一.go语言简介 天然支持高并发 内存自动回收,不需要开发人员管理内存 支持管道,从而支持多个协程之间通信 多返回值,一个函数可以允许多个返回值 异常和错误的区分,异常是不能预料到的事情发生了,错误是预料到的事情发生了. 二.理解gopath gopath go项目的工作目录,目录下面包含三个目录,src,pkg,bin goroot go源码的安装路径 gobin 存放go编译后生成的可执行文件 go get 执行go get会把源码放在第一个gopath的src目录下面 三.go基础知识 3

iOS面试必备-iOS基础知识

近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内存管理机制:使用引用计数管理,分为ARC和MRC,MRC需要程序员自己管理内存,ARC则不需要.但是并不是 所有对象在ARC环境下均不需要管理内存,子线程和循环引用并不是这样.与retain配对使用的是release,retain代表引用计 数+1,release代表引用计数-1,当引用计数减为0时

动画基础知识汇总

转载自http://www.cnblogs.com/kenshincui/p/3972100.html --iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看到动画操作在iOS中是如何简单和高效,很多原来想做但是苦于没有思路的动画在iO

IOS基础知识学习

第一章MAC  OS X 1.Mac操作系统,俗称雪豹系统,开发IPhone开发首先要安装MAC系统. 2.objective-c是基于C语言的扩展 3.Mac App store应用商店是苹果公司的电子市场,程序员开发的程序必须上传到此商店上,供别人下载. 4.Appkit用于MAC界面开发,Uikit用于IPhone界面开发. 5.Application kit框架包含实现图形,事件驱动等 6.Xcode是用于开发MAC OS 和IOS应用程序的实用工具,要熟练运用它. 7.Xcode提供代

web基础知识汇总

HTML&XML 1.JavaWeb的概述 A: 什么是Web----->就是网页或者网站 B: 什么是JavaWeb----->就是使用java语言做web C: 浏览器访问网站的原理 && 静态资源和动态资源的区别 2. Html的概述 Html: Hyper Text Markup Language 超文本标记语言 超文本:     超出纯文本的范畴 标记语言:  标记其实就是标签       标签的格式: <标签名称> 3. Html文档的组成以及标