一、通知
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. Oracle数据库导出

    一. pl/SQL方式 1.打开plsql,找到工具栏,导出表

  2. 程序破解之 API HOOK技术 z

    API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socke ...

  3. Cutting Sticks

    题意: l长的木棒,给出n个切割点,每切一次的费用为切得木棒的长度,完成切割的最小费用. 分析: 区间dp入门,区间dp的特点,一个大区间的解可以转换成小区间的解组合起来,每个切割点的标号代表边界. ...

  4. IOS 支付宝 SDK 申请

    https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId=4#ps-tabinfo-hash

  5. sql基本语句

    ---恢复内容开始--- 查询有几个不同的职位名称: select distinct name from a: group by: 现在有两个表product和sales,字段分别如下: TABLES ...

  6. 《Python基础教程(第二版)》学习笔记 -> 第十一章 文件和素材

    打开文件 open函数用来打开文件,语句如下: open(name[,mode[,buffering]]) open函数使用一个文件名作为唯一的强制参数,然后后返回一个文件对象.模式(mode)和缓冲 ...

  7. I*k->AK

    将卷积转化为乘积: function A = GetA(I,m,n) %GetA get A which transforms P@k to A*k % I is the input imageP; ...

  8. aggregation(2):adaptive Boosting (AdaBoost)

    给你这些水果图片,告诉你哪些是苹果.那么现在,让你总结一下哪些是苹果? 1)苹果都是圆的.我们发现,有些苹果不是圆的.有些水果是圆的但不是苹果, 2)其中到这些违反"苹果都是圆的" ...

  9. Tkinter教程之Menu篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811321 '''Tkinter教程之Menu篇''''''1.创建一个简单的Menu'''# ...

  10. 利用redis分布式锁的功能来实现定时器的分布式

    文章来源于我的 iteye blog http://ak478288.iteye.com/blog/1898190 以前为部门内部开发过一个定时器程序,这个定时器很简单,就是配置quartz,来实现定 ...