以iPhone 7,iOS12.1為例:
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比禹會網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式禹會網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋禹會地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
需要用到的工具:時鐘。
一、在桌面找到時鐘圖標(biāo),并輕點(diǎn)打開。
二、在時鐘導(dǎo)航欄選擇“計(jì)時器”并輕點(diǎn)打開。
三、點(diǎn)擊“啟動”,計(jì)時器開始計(jì)時。
四、當(dāng)需要計(jì)次的時候點(diǎn)擊“計(jì)次”即可。
五、屏幕上方的時間就是累計(jì)的時間。
蘋果秒表懸浮窗設(shè)置方法:
步驟設(shè)置-—通用-—輔助功能-—assistivetouch-—打開就能看見一個白點(diǎn)就是了其實(shí)就是一個代替home鍵的虛擬按鍵按主屏幕就能退到桌面按兩下主屏幕就能打開桌面設(shè)備內(nèi)還有鎖屏旋轉(zhuǎn)靜音等功能。
也可以打開手機(jī)頁面,兩個手指按住屏幕,之后同時往中間滑動。然后我們在彈出來的窗口中點(diǎn)擊打開“窗口小工具”。然后我們在彈出來的窗口中點(diǎn)擊選擇喜歡的時鐘格式,按住拉到桌面即可。
在開發(fā)項(xiàng)目的時候,需要一個計(jì)時器來做讀秒操作。要求在頁面切換的時候,重新進(jìn)入頁面仍然可以繼續(xù)讀秒。但是,當(dāng)頁面pop出來的時候,定時器會自動銷毀掉,重新進(jìn)入頁面的時候已經(jīng)無法繼續(xù)進(jìn)行讀秒了。
iOS中常用的定時器有三種,分別是NSTime,CADisplayLink和GCD。其本質(zhì)都是通過RunLoop來實(shí)現(xiàn),但GCD通過其調(diào)度機(jī)制大大提高了性能。GCD定時器實(shí)際上是使用了dispatch源(dispatch source),dispatch源監(jiān)聽系統(tǒng)內(nèi)核對象并處理。dispatch類似生產(chǎn)者消費(fèi)者模式,通過監(jiān)聽系統(tǒng)內(nèi)核對象,在生產(chǎn)者生產(chǎn)數(shù)據(jù)后自動通知相應(yīng)的dispatch隊(duì)列執(zhí)行,后者充當(dāng)消費(fèi)者。通過系統(tǒng)級調(diào)用,更加精準(zhǔn)。
//–––––––––––––––––––––單例.h––––––––––––––––––––––––
#import?
@interface?CaptchaTimerManager :NSObject
@property?(nonatomic,assign)__blockint?timeout;
+ (id)sharedTimerManager;
- (void)countDown;
@end
//–––––––––––––––––––––單例.m––––––––––––––––––––––––
#import"CaptchaTimerManager.h"
@implementation?CaptchaTimerManager
+ (id)sharedTimerManager{
static?CaptchaTimerManager?*manager =nil;
staticdispatch_once_t?onceToken;
dispatch_once(onceToken, ^{
if?(manager ==nil) {
? ? ? ? manager = [[selfalloc]init];
? ? }
});
return?manager;
}
- (void)countDown{
if?(_timeout?0) {
dispatch_queue_t?queue =?dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_source_t?_timer =?dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,?0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL,0),1.0*NSEC_PER_SEC,0);?//每秒執(zhí)行
dispatch_source_set_event_handler(_timer, ^{
if(_timeout=0){//倒計(jì)時結(jié)束,關(guān)閉
dispatch_source_cancel(_timer);
? ? ? ? }else{
_timeout--;
? ? ? ? }
? ? });
dispatch_resume(_timer);
}
}
@end
//–––––––––––––––––––––調(diào)用––––––––––––––––––––––––
#import?"CaptchaTimerManager.h"
@property?(weak,nonatomic)?IBOutletUIButton?*getNUmber;
@property?(nonatomic,assign)?int?timeout;
- (IBAction)getNumberButton:(UIButton?*)sender {
_getNUmber.enabled?=NO;
_timeout?=10;?//倒計(jì)時時間
[selftimerCountDown];
}
-(void)viewWillAppear:(BOOL)animated{
CaptchaTimerManager?*manager = [CaptchaTimerManagersharedTimerManager];
int?temp = manager.timeout;
if?(temp 0) {
_timeout= temp;//倒計(jì)時時間
_getNUmber.enabled?=NO;
? ? [selftimerCountDown];
}else{
_getNUmber.enabled?=YES;
}
}
- (void)viewWillDisappear:(BOOL)animated{
[superviewWillDisappear:animated];
if?(self.timeout?0) {
CaptchaTimerManager?*manager = [CaptchaTimerManagersharedTimerManager];
if?(manager.timeout?==0) {
? ? ? ? manager.timeout?=_timeout;
[manager?countDown];
? ? }
_timeout?=?0;//置為0,釋放controller
}
}
//控制器里的計(jì)時器
- (void)timerCountDown {
dispatch_queue_t?queue =?dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_source_t?_timer =?dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,?0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL,0),1.0*NSEC_PER_SEC,0);?//每秒執(zhí)行
dispatch_source_set_event_handler(_timer, ^{
if(_timeout=0){//倒計(jì)時結(jié)束,關(guān)閉
? ? ? ?dispatch_source_cancel(_timer);
? ? ? ?dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? ? ?//這里寫倒計(jì)時結(jié)束button的處理
? ? ? ? });
? ? }else{
? ? ? ?dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? ? ?//這里寫倒計(jì)時期間button的處理(重設(shè)button的tiitle、用戶交互等)
if?(_timeout==1) {
self.title?=@"輸入手機(jī)號";
_getNUmber.enabled?=YES;
}?else?{
self.title?= [NSStringstringWithFormat:@"%d",_timeout];
? ? ? ? ? ? }
? ? ? ? });
_timeout--;
? ? }
});
dispatch_resume(_timer);
}
總結(jié)自下面兩篇文章
iOS的幾種定時器及區(qū)別 ? ??
iOS 單例計(jì)時器(頁面切換仍然計(jì)時)
demo地址? GitHub - littlePerson/SingletonTimer
歡迎指正批評!
創(chuàng)建一個計(jì)時器就行了。
例:
驗(yàn)證60秒
int timeTick;
NSTimer *timer;
timeTick = 61;//60秒倒計(jì)時
timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES];
_but.enabled = NO;
-(void)timeFireMethod
{
timeTick--;
if(timeTick==0){
[timer invalidate];
_but.enabled = YES;
[_but setTitle:@"獲取驗(yàn)證碼" forState:UIControlStateNormal];
}else
{
NSString *str = [NSString stringWithFormat:@"%d秒",timeTick];
[_but setTitle:str forState:UIControlStateNormal];
}
}
上面代碼就是實(shí)現(xiàn)了一個倒計(jì)時60秒的功能。
1.首先打開我們的蘋果手機(jī),找到【時鐘】后點(diǎn)擊打開。
2.打開后找到屏幕下方的【秒表】的標(biāo)簽頁。
3.我們要計(jì)時是可以點(diǎn)擊【啟動】,開啟秒表功能。
4.秒表開始計(jì)時,同時右邊按鈕變成【停止】,我們計(jì)時停止可以點(diǎn)擊停止計(jì)時。右邊的【計(jì)次】數(shù)字會顯示秒表的次數(shù)。
蘋果在主菜單中找到時鐘圖標(biāo)這里設(shè)置秒表懸浮功能。
蘋果在主菜單中找到時鐘圖標(biāo),然后輕觸該圖標(biāo)。您可以在這里設(shè)置世界時鐘、鬧鐘、倒計(jì)時和秒表功能。在世界時鐘選項(xiàng)中,您可以直觀地看到北京時間。
如果您想添加其他外國城市,可以單擊上面的按鈕添加它們。你可以使用iPhone的觸摸鍵盤添加一個世界時鐘來顯示世界上其他主要城市和時區(qū)的時間。如果你找不到一個城市,你可以找到一個主要城市在同一時區(qū)的城市。
蘋果使用秒表方法
1、解鎖手機(jī),進(jìn)入手機(jī)主人界面。
2、找到時鐘應(yīng)用程序并打開它。
3、這時,我們點(diǎn)擊下面的秒表圖標(biāo)。
4、此時點(diǎn)擊開始,即可計(jì)時。
5、開始計(jì)數(shù)后,我們可以通過點(diǎn)擊計(jì)數(shù)來記錄每次的時間。
6、計(jì)時器結(jié)束后,我們可以點(diǎn)擊停止。
7、記錄數(shù)據(jù)后,按復(fù)位清除所有數(shù)據(jù)。