iOSのいくつかの属性の設定はカウントダウンボタンを完成します

1615 ワード

概要
簡単な属性設定で「ページを終了/APP/システムを変更する時間を殺す」ことを恐れないカウントダウンボタンを持つことができます
Code
AZTools/UIButton+AZCountDown
使用
高速統合
pod 'AZTools'

ヘッダファイルを追加
#import 

属性の設定
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    //      
    [self.button az_cd_recover];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // ...   
  
    self.button.az_cd_identify = @"AZCountDownDemoBtn";
    self.button.az_cd_count = 60;
    self.button.az_cd_countdownBlock = ^(NSInteger countDown, UIButton * _Nonnull button) {
        [button setTitle:[NSString stringWithFormat:@"%lds",(long)countDown] forState:UIControlStateDisabled];
    };
    self.button.az_cd_endBlock = ^{
        NSLog(@"     !");
    };
}

- (IBAction)startCountDown:(UIButton *)sender {
    //          
    [sender az_cd_start];
}

シナリオの概要
ページを終了/アプリを殺すことでカウントダウンをリセットしない
カウントダウンの有効期限は、一意のフラグビットによってローカルに記録され、az_cd_recoverカウントダウンが再開されるたびにローカルから読み取り、残りの時間を計算します.
システム時間の修正カウントダウンの防止
ストレージの有効期限は、携帯電話のローカル時間とは無関係にサーバ時間です.ここでは主にAZServiceDateというクラスが用いられ,サーバ時間と完全に同期するにはAZServiceDateの更新サーバ時間メソッドを適切なタイミングで呼び出す必要がある.
// AZServiceDate.h

/**    URL   Date     ServiceDate */
+ (void)updateDateWithUrl:(nullable NSString *)url success:(dispatch_block_t)success failure:(dispatch_block_t)failure;

/**    RFC3339    RFC822 string          */
+ (void)updateStandardNetResponseDate:(nullable NSString *)dateStr;