App啟動(dòng)加載時(shí)顯示Loading循環(huán)圖像

想要App啟動(dòng)加載時(shí)顯示Loading循環(huán)圖像窃这,圖如下:


1) DrawLoadingGif.h


2) DrawLoadingGif.m

#import "DrawLoadingGif.h"

@implementation DrawLoadingGif

- (id)initWithFrame:(NSRect)frameRect

{

? ? self= [superinitWithFrame:frameRect] ;

? ? if(self){

? ? ? ? width= frameRect.size.width;

? ? ? ? height= frameRect.size.height;

? ? ? ? amount=15;

? ? ? ? intervalTime = 0.05;

? ? ? ? fullDiameter = 100;

? ? ? ? minorDiameter = 15;

? ? ? ? LoadingState = 0;

? ? ? ? fontState=0;

? ? }

? ? return self ;

}

- (DrawLoadingGif*)initWithSize:(CGFloat)boundWidth andHeight:(CGFloat)boundHeight

{

? ? if([superinit] ==self)

? ? {

? ? ? ? width= boundWidth ;

? ? ? ? height= boundHeight ;


? ? ? ? amount=15;

? ? ? ? intervalTime = 0.05;

? ? ? ? fullDiameter = 100;

? ? ? ? minorDiameter = 15;


? ? ? ? LoadingState = 0;

? ? ? ? fontState=0;

? ? }


? ? return self ;

}

- (void)setAmount:(int)iamount

{

? ? amount= iamount ;

}

- (void)setMoment:(int)imoment

{

? ? moment= imoment ;

}

- (void)setInterval:(double)dinterval

{

? ? intervalTime= dinterval ;

}

- (void)setFullDiameter:(double)dfullDimeter

{

? ? fullDiameter= dfullDimeter ;

}

- (void)setMinorDiameter:(double)dminorDiameter

{

? ? minorDiameter= dminorDiameter ;

}

- (void)start

{

? ? if(isLoading)

? ? {

? ? ? ? return;

? ? }


? ? LoadingState = 1;

? ? [NSThread detachNewThreadSelector:@selector(startDrawLoadingGif) toTarget:self withObject:nil];

}

- (void)startDrawLoadingGif {

? ? isLoading = YES;

? ? while (isLoading) {

? ? ? ? for(moment=0;moment

? ? ? ? ? ? [NSThread sleepForTimeInterval:intervalTime];

? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{

? ? ? ? ? ? ? ? [selfsetNeedsDisplay:YES];

? ? ? ? ? ? });

? ? ? ? ? ? if(!isLoading) {

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? LoadingState = 2;

? ? }

}

- (void)stop

{

? ? isLoading = NO ;

}

- (void)drawRect:(NSRect)dirtyRect

{

? ? // [super drawRect:dirtyRect];

? ? // Drawing code here.

//? ? NSColor* color =[NSColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0 ];

//? ? NSColor* color =[NSColor blackColor];

//? ? [self drawRect:dirtyRect setFill:color setStroke:color];



? ? if(LoadingState==0) {

? ? ? ? return;

? ? }elseif(LoadingState==1){

? ? ? ? for(inti =0; i

? ? ? ? ? ? CGFloat w = (i*1.0/amount)*(minorDiameter-1)*moment/amount+1;

? ? ? ? ? ? CGFloath = w;

? ? ? ? ? ? CGFloatx = (int)(width/2+fullDiameter*sin((moment+i)*2*M_PI/amount)-w/2);

? ? ? ? ? ? CGFloaty = (int)(height/2+fullDiameter*cos((moment+i)*2*M_PI/amount)-w/2);

? ? ? ? ? ? NSBezierPath*bezierPath = [selfdrawBezierPath:x

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :y

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :w

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :h];

? ? ? ? ? ? CGFloatcircleAlpha = i*0.8/amount+0.2;

? ? ? ? ? ? [bezierPathclosePath];

? ? ? ? ? ? [[NSColor colorWithSRGBRed:1.0 green:1.0 blue:0.0 alpha:circleAlpha] setFill];

? ? ? ? ? ? [bezierPathfill];

? ? ? ? }

? ? }else{

? ? ? ? for(inti =0; i

? ? ? ? ? ? NSBezierPath*bezierPath = [selfdrawBezierPath:(int)(width/2+fullDiameter*sin((moment+i)*2*M_PI/amount)-((i*1.0/amount)*(minorDiameter-1)+1)/2)

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :(int)(height/2+fullDiameter*cos((moment+i)*2*M_PI/amount)-((i*1.0/amount)*(minorDiameter-1)+1)/2)

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :(i*1.0/amount)*(minorDiameter-1)+1

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :(i*1.0/amount)*(minorDiameter-1)+1];

? ? ? ? ? ? CGFloatcircleAlpha = i*0.6/amount+0.4;

? ? ? ? ? ? [bezierPathclosePath];

? ? ? ? ? ? [[NSColor colorWithSRGBRed:1.0 green:1.0 blue:0.0 alpha:circleAlpha] setFill];

? ? ? ? ? ? [bezierPathfill];

? ? ? ? }

? ? }


? ? NSString*title =@"Loading";

? ? NSMutableDictionary *dict = [NSMutableDictionary dictionary];

? ? CGFloattitleRed;

? ? if(fontState==0) {

? ? ? ? titleRed =1-moment*1.0/amount;

? ? }else{

? ? ? ? titleRed =moment*1.0/amount;

? ? }


? ? if(moment==amount-1) {

? ? ? ? fontState=fontState==0?1:0;

? ? }


? ? dict[NSForegroundColorAttributeName] = [NSColor colorWithSRGBRed:titleRed green:1.0 blue:0.0 alpha:1.0];



? ? dict[NSFontAttributeName] = [NSFont systemFontOfSize:32.0];

? ? [titledrawInRect:NSMakeRect(width/2-55, height/2-20, 120, 40) withAttributes:dict];

}

- (NSBezierPath *)drawBezierPath:(CGFloat)x :(CGFloat)y :(CGFloat)w :(CGFloat)h

{

? ? NSBezierPath *bezierPath = [NSBezierPath bezierPathWithOvalInRect:NSMakeRect(x,y,w,h)];

? ? returnbezierPath;

}

- (void)drawRect:(NSRect)rect

?? ? ? ? setFill:(NSColor*)fillColor

{

? ? [fillColorsetFill];

? ? [NSBezierPathfillRect:rect];

}

- (void)drawRect:(NSRect)rect

?? ? ? setStroke:(NSColor*)strokeColor

{

? ? [strokeColorsetStroke];

? ? [NSBezierPathstrokeRect:rect];

}

- (void)drawRect:(NSRect)rect

?? ? ? ? setFill:(NSColor*)fillColor

?? ? ? setStroke:(NSColor*)strokeColor

{

? ? [selfdrawRect:rectsetFill:fillColor];

? ? [selfdrawRect:rectsetStroke:strokeColor];

}

@end


3) 使用DrawLoadingGif類(lèi)的方法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末进苍,一起剝皮案震驚了整個(gè)濱河市迟郎,隨后出現(xiàn)的幾起案子源葫,更是在濱河造成了極大的恐慌些膨,老刑警劉巖湖笨,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黄刚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡诫尽,警方通過(guò)查閱死者的電腦和手機(jī)涂邀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)箱锐,“玉大人,你說(shuō)我怎么就攤上這事劳较【灾梗” “怎么了浩聋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)臊恋。 經(jīng)常有香客問(wèn)我衣洁,道長(zhǎng),這世上最難降的妖魔是什么抖仅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任坊夫,我火速辦了婚禮,結(jié)果婚禮上撤卢,老公的妹妹穿的比我還像新娘环凿。我一直安慰自己,他們只是感情好放吩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布智听。 她就那樣靜靜地躺著,像睡著了一般渡紫。 火紅的嫁衣襯著肌膚如雪到推。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天惕澎,我揣著相機(jī)與錄音莉测,去河邊找鬼。 笑死唧喉,一個(gè)胖子當(dāng)著我的面吹牛捣卤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欣喧,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腌零,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了唆阿?” 一聲冷哼從身側(cè)響起益涧,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驯鳖,沒(méi)想到半個(gè)月后闲询,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浅辙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年扭弧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片记舆。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸽捻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情御蒲,我是刑警寧澤衣赶,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站厚满,受9級(jí)特大地震影響府瞄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碘箍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一遵馆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丰榴,春花似錦货邓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至峻黍,卻和暖如春复隆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姆涩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工挽拂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骨饿。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓亏栈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宏赘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绒北,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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