Block(塊)介紹之五:系統(tǒng)框架中的Block

pple定義的系統(tǒng)框架的API中洪橘,對(duì)Block的使用也比較集中济瓢,主要在動(dòng)畫荠割、通知等等幾個(gè)方面,因此旺矾,對(duì)于普通開發(fā)者來說蔑鹦,重點(diǎn)掌握系統(tǒng)框架API中Block的使用也是比較有必要的。

1箕宙、系統(tǒng)框架API中的Block

在iOS4以后嚎朽,越來越多的系統(tǒng)級(jí)的API在使用Block。蘋果對(duì)于Block的使用主要集中在如下幾個(gè)方面:

完成處理–Completion Handlers

通知處理–Notification Handlers

錯(cuò)誤處理–Error Handlers

枚舉–Enumeration

動(dòng)畫與形變–View Animation and Transitions

分類–Sorting

線程管理:GCD/NSOperation

接下來扒吁,給大家介紹幾個(gè)常用的火鼻。

2、動(dòng)畫與形變

在UIView類的定義中雕崩,提供了若干個(gè)包含Block參數(shù)的方法魁索,用來設(shè)置動(dòng)畫,例如修改View的大小盼铁、位置粗蔚、透明度等等。

@interfaceUIView(UIViewAnimationWithBlocks)

+(void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void(^)(void))animations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);

+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);// delay = 0.0, options = 0

+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations NS_AVAILABLE_IOS(4_0);// delay = 0.0, options = 0, completion = NULL

+(void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void(^)(void))animations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);

+(void)transitionWithView:(UIView*)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void(^__nullable)(void))animations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);

+(void)transitionFromView:(UIView*)fromView toView:(UIView*)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);// toView added to fromView.superview, fromView removed from its superview

+(void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray*)views options:(UIViewAnimationOptions)options animations:(void(^__nullable)(void))parallelAnimations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);

@end

示例:

[UIViewanimateWithDuration:0.2animations:^{

view.alpha=0.0;

}completion:^(BOOL finished){

[view removeFromSuperview];

}];

3饶火、完成與錯(cuò)誤處理

完成處理Block在某個(gè)動(dòng)作完成后鹏控,通過回調(diào)的方式進(jìn)行執(zhí)行。錯(cuò)誤處理Block會(huì)在執(zhí)行某個(gè)操作時(shí)肤寝,假如發(fā)生錯(cuò)誤而被執(zhí)行当辐。

-(IBAction)pressBtn:(id)sender{

CGRectcacheFrame=self.imageView.frame;

[UIViewanimateWithDuration:1.5animations:^{//播放動(dòng)畫Block

CGRectnewFrame=self.imageView.frame;

newFrame.origin.y=newFrame.origin.y+150.0;

self.imageView.frame=newFrame;

self.imageView.alpha=0.2;

}

completion:^(BOOL finished){//結(jié)束回調(diào)Block

if(finished){

// Revert image view to original.

self.imageView.frame=cacheFrame;

self.imageView.alpha=1.0;

}

}];

}

4、通知

在注冊(cè)通知觀察者中鲤看,有如下的方法缘揪,可以在添加/注冊(cè)觀察者時(shí),編寫收到通知后需要執(zhí)行的Block代碼。使用這個(gè)方法來注冊(cè)通知找筝,可以使代碼簡(jiǎn)單明了蹈垢。

-(id)addObserverForName:(nullableNSString*)nameobject:(nullable id)obj queue:(nullableNSOperationQueue*)queue usingBlock:(void(^)(NSNotification*note))block;

示例:

-(void)viewDidLoad{

[superviewDidLoad];

//注冊(cè)觀察者

[[NSNotificationCenterdefaultCenter]addObserverForName:@"AnimationCompleted"

object:nilqueue:[NSOperationQueuemainQueue]

usingBlock:^(NSNotification*notif){

NSLog(@"ViewController動(dòng)畫結(jié)束");

}];

}

5、線程操作(GCD/NSOperation)

在有關(guān)線程操作的GCD以及NSOperation中袖裕,也會(huì)使用到Block曹抬。例如,延遲執(zhí)行方法急鳄。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(1.0*NSEC_PER_SEC)),dispatch_get_main_queue(),^{

//延遲N秒后執(zhí)行的代碼

});

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谤民,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疾宏,更是在濱河造成了極大的恐慌赖临,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灾锯,死亡現(xiàn)場(chǎng)離奇詭異兢榨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)顺饮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門吵聪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兼雄,你說我怎么就攤上這事吟逝。” “怎么了赦肋?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵块攒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我佃乘,道長(zhǎng)囱井,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任趣避,我火速辦了婚禮庞呕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘程帕。我一直安慰自己住练,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布愁拭。 她就那樣靜靜地躺著讲逛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岭埠。 梳的紋絲不亂的頭發(fā)上盏混,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天顺呕,我揣著相機(jī)與錄音,去河邊找鬼括饶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛来涨,可吹牛的內(nèi)容都是我干的图焰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼蹦掐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼技羔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卧抗,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤藤滥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后社裆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拙绊,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年泳秀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了标沪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嗜傅,死狀恐怖金句,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吕嘀,我是刑警寧澤违寞,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站偶房,受9級(jí)特大地震影響趁曼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棕洋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一彰阴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拍冠,春花似錦尿这、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晃财,卻和暖如春叨橱,著一層夾襖步出監(jiān)牢的瞬間典蜕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工罗洗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愉舔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓伙菜,卻偏偏與公主長(zhǎng)得像轩缤,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贩绕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,770評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫火的、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,064評(píng)論 4 62
  • 每年這個(gè)時(shí)候我就會(huì)寫6封信淑倾,給:一年前馏鹤,五年前,十年前的自己娇哆,一年后湃累,五年后,十年后的自己碍讨。 根據(jù)積極心理學(xué)開山鼻...
    女巫在人間閱讀 295評(píng)論 0 0
  • 想了解更多健康知識(shí)榜田?點(diǎn)擊右上角↗,關(guān)注我們吧锻梳! “養(yǎng)樹護(hù)根箭券,養(yǎng)人護(hù)腳”。雙腳是運(yùn)行氣血疑枯、聯(lián)絡(luò)臟腑辩块、溝通內(nèi)外、貫穿上...
    肥貓愛你閱讀 569評(píng)論 0 0
  • 日語中蔬菜: 1.八寶飯 はっぽはん(がゆ) 2.棒棒糖 ボンボン 3.爆米花 ポップコーン 4.便餐 けいしょく...
    知辰課堂閱讀 122評(píng)論 0 0