码迷,mamicode.com
首页 > 移动开发 > 详细

iOS基础知识汇总(一)

时间:2016-05-19 17:43:01      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

一、通知

1.监听通知

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

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

 

2.发布通知

// 发布一个通知对象(nameobjectuserInfo

- (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秒内会调用60targetsel方法,并且将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的动画

// CABasicAnimationCAKeyframeAnimationkeyPath可以是哪些值?

// 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> 如果动画执行完毕后,就要用到前面的一些东西,最好选择UIViewblock动画

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

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

 

4.自定义一些动画

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

iOS基础知识汇总(一)

标签:

原文地址:http://www.cnblogs.com/flyer-blog/p/5509506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!