一、通知
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,在刷帧方法完成需要执行的动画
 

iOS开发——总结篇&常用开发总结的更多相关文章

  1. iOS开发UI篇—iPad开发中得modal介绍

    iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...

  2. iOS开发——OC篇&常用关键字的使用与区别

    copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别 最近在学习iOS的 ...

  3. iOS开发——高级篇——iPad开发、iPad开发中的modal

    一.iPad简介 1.什么是iPad一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑产品之间跟iPhone一样,搭载的是iOS操作系统 2.iPhone和iPadi ...

  4. SAP web 开发 (第二篇 bsp 开发 mvc模式 Part2 )

    单击第一个图标,第一个图标突出显示,单击第二个图标,第一个变灰,第二个突出显示,反之一样.单击history读取历史记录. Controller ZCL_SUS_C_ORDER_CHANGE 1.   ...

  5. SAP web 开发 (第二篇 bsp 开发 mvc模式 Part1 )

    Model-View-Controller 简称MVC. 简单的说就是把数据处理,显示,页面事件及处理过程分离开来,企业应用多数都采用这种方式,多层架构的优缺点不再多言,google一下啥都知道. 在 ...

  6. iOS开发数据库篇—SQLite常用的函数

    iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 * ...

  7. ios开发——实用技术总结Swift篇&swift常用开发技术总结

    swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...

  8. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  9. iOS开发数据库篇—SQLite简单介绍

    iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...

随机推荐

  1. tools/adb: No such file or directory

    运行adb出现这种错误: bash: ./adb: No such file or directory   但adb确实存在.那说明你用的是64位的Linux,没装32位运行时库,安装 $ sudo  ...

  2. [原创]C语言利用pcre正则表达式库

    C语言使用正则表达式,可以利用pcre库,这个比较不错的哦. 在使用过程中,利用python进行测试正则表达式是否OK,后发现出现了问题.如下所示: regex.c:11:18: warning: u ...

  3. Dubbo服务重载方法在JDK1.8上调用出错的问题(待解决)

    据说是javassist版本太低不支持JDK1.8,但是测试升级了还是调用出错.预留,待解决.

  4. CATALOGUE 目录

    1 语言基础 1.1 c/c++ [转]C/C++ 存储类型 作用域 连接类型 [转]C/C++内存划分 [转]C/C++除法实现方式及负数取模详解 [转]为什么C++编译器不能支持对模板的分离式编译 ...

  5. ldconfig报错 :libstdc++.so.6.0.18-gdb.py不是一个elf文件

    今天安装wxWidgets,输入ldconfig竟然提示 /usr/lib64/libstdc++.so.6.0.18-gdb.py 不是一个elf文件,开头魔数错误 摸不着头脑,上网搜了一下,有说是 ...

  6. [算法] 选择排序 Selection sort

    选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然 ...

  7. 虚拟化技术对比:Xen vs KVM

    恒天云:http://www.hengtianyun.com/download-show-id-68.html 一.说明 本文主要从功能方面和性能方面对Xen和KVM对比分析,分析出其优缺点指导我们恒 ...

  8. USACO 2013 November Contest Gold 简要题解

    Problem 1. Empty Stalls 扫两遍即可. Problem 2. Line of Sight 我们发现能互相看见的一对点一定能同时看见粮仓的某一段.于是转换成有n段线段,问有多少对线 ...

  9. Another mysql daemon already running with the same unix socket

    在国外网站发现的解决方法. 原因多个Mysql进程使用了同一个socket. 两个方法解决: 第一个是立即关机 使用命令 shutdown -h now 关机,关机后在启动,进程就停止了. 第二个直接 ...

  10. POJ 3660 Cow Contest (floyd求联通关系)

    Cow Contest 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/H Description N (1 ≤ N ≤ 100) ...