在狀態(tài)欄上做漸變動(dòng)畫效果

作者:YouXianMing授權(quán)本站轉(zhuǎn)載。

效果

說明

1. 在狀態(tài)欄上顯示信息并覆蓋狀態(tài)欄信息需要技巧

2. 本設(shè)計(jì)支持外部消息view的定制,只需要實(shí)現(xiàn)規(guī)定的協(xié)議方法即可

源碼

https://github.com/YouXianMing/StatusBarMessage


//??StatusMessage.h

//??StatusBarView

//

//??Created?by?YouXianMing?on?15/7/24.

//??Copyright?(c)?2015年?YouXianMing.?All?rights?reserved.

//

#import?#import?"StatusMessageProtocol.h"

@interface?StatusMessage?:?UIView

/**

*??顯示加載的view

*

*??@param?view?????實(shí)現(xiàn)了StatusMessageProtocol的view

*??@param?duration?動(dòng)畫顯示時(shí)間

*/

+?(void)showWithView:(UIView??*)view?duration:(NSTimeInterval)duration;

/**

*??隱藏加載的view

*

*??@param?duration?隱藏動(dòng)畫顯示時(shí)間

*/

+?(void)hideWithDuration:(NSTimeInterval)duration;

///////////////////////////////////////////////////////////////////////////////////////////////////

/**

*??設(shè)置顯示以及隱藏的動(dòng)畫時(shí)間(不設(shè)置,默認(rèn)為1s)

*

*??@param?duration?動(dòng)畫時(shí)間

*/

+?(void)showAndHideDuration:(NSTimeInterval)duration;

/**

*??顯示view,然后幾秒后隱藏

*

*??@param?view????實(shí)現(xiàn)了StatusMessageProtocol的view

*??@param?seconds?延時(shí)幾秒后隱藏

*/

+?(void)showWithView:(UIView?*)view?hideAfterSeconds:(NSTimeInterval)seconds;

@end

//

//??StatusMessage.m

//??StatusBarView

//

//??Created?by?YouXianMing?on?15/7/24.

//??Copyright?(c)?2015年?YouXianMing.?All?rights?reserved.

//

#import?"StatusMessage.h"

#define??Status_Message??@"StatusMessage"

static?UIWindow????????*_statusWindow??????=?nil;

static?NSMapTable??????*_weakDictionary????=?nil;

static?NSTimeInterval???_animationDuration?=?1.f;

@implementation?StatusMessage

+?(void)initialize?{

if(self?==?[StatusMessage?class])?{

_weakDictionary?=?[NSMapTable?strongToWeakObjectsMapTable];

_statusWindow????????????????????????=?[[UIWindow?alloc]?initWithFrame:STATUS_BAR_FRAME];

_statusWindow.windowLevel????????????=?UIWindowLevelStatusBar?+?1;

_statusWindow.userInteractionEnabled?=?NO;

[_statusWindow?makeKeyAndVisible];

}

}

+?(void)showWithView:(UIView??*)view?duration:(NSTimeInterval)duration?{

[_weakDictionary?setObject:view?forKey:Status_Message];

[_statusWindow?addSubview:view];

[view?showWithDuration:duration];

}

+?(void)hideWithDuration:(NSTimeInterval)duration?{

UIView??*tmpView?=?[_weakDictionary?objectForKey:Status_Message];

[tmpView?hideWithDuration:duration];

}

+?(void)showAndHideDuration:(NSTimeInterval)duration?{

_animationDuration?=?duration;

}

+?(void)showWithView:(UIView?*)view?hideAfterSeconds:(NSTimeInterval)seconds?{

[_weakDictionary?setObject:view?forKey:Status_Message];

[_statusWindow?addSubview:view];

[view?showWithDuration:_animationDuration];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,?seconds?*?NSEC_PER_SEC),?dispatch_get_main_queue(),?^{

UIView??*tmpView?=?[_weakDictionary?objectForKey:Status_Message];

[tmpView?hideWithDuration:_animationDuration];

});

}

@end

//

//??StatusMessageProtocol.h

//??StatusBarView

//

//??Created?by?YouXianMing?on?15/7/24.

//??Copyright?(c)?2015年?YouXianMing.?All?rights?reserved.

//

#import?/**

*??狀態(tài)欄的frame值

*/

#define??STATUS_BAR_FRAME??[[UIApplication?sharedApplication]?statusBarFrame]

@protocol?StatusMessageProtocol?@required

/**

*??顯示動(dòng)畫

*

*??@param?seconds?顯示持續(xù)時(shí)間

*/

-?(void)showWithDuration:(NSTimeInterval)seconds;

/**

*??隱藏動(dòng)畫(隱藏動(dòng)畫的時(shí)候請(qǐng)移除掉自己)

*

*??@param?seconds?隱藏持續(xù)時(shí)間

*/

-?(void)hideWithDuration:(NSTimeInterval)seconds;

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫全貌。在這里你可以看...
    F麥子閱讀 5,270評(píng)論 5 13
  • /* UIViewController is a generic controller base class th...
    DanDanC閱讀 2,054評(píng)論 0 2
  • 在iOS實(shí)際開發(fā)中常用的動(dòng)畫無非是以下四種:UIView動(dòng)畫,核心動(dòng)畫,幀動(dòng)畫,自定義轉(zhuǎn)場(chǎng)動(dòng)畫。 1.UIView...
    請(qǐng)叫我周小帥閱讀 3,326評(píng)論 1 23
  • UIKit直接將動(dòng)畫集成到UIView類中,當(dāng)內(nèi)部的一些屬性發(fā)生改變時(shí),UIView將為這些改變提供動(dòng)畫支持。 U...
    白水灬煮一切閱讀 1,529評(píng)論 0 0
  • 小小的廣場(chǎng)上人來人往,從南走到北,從東走到西,幾百平方的地方,廣場(chǎng)舞團(tuán)就劃分了好幾個(gè),這里一群,那里一片。 有跳扇...
    李在在閱讀 429評(píng)論 2 2

友情鏈接更多精彩內(nèi)容