30초 카운트 다운 타이머 만들기 

(countdownlabel 객체는 storybord에 미리 만들어 놓는다.)

#import <UIKit/UIKit.h>

@interface SosRequestViewController : UIViewController 

//타이머 객체

@property(strong,nonatomic)  NSTimer *CountDownTimer;

@property (nonatomic, assign) NSInteger second;

@end

 

.m

//타이머 시작!
-(void)startTimer{
    
        //폰트를 넣어줘야, lable 위치가 흔들리지 않는다.
        UIFont *myfont = [UIFont monospacedDigitSystemFontOfSize:_countDownLabel.font.pointSize weight:UIFontWeightRegular];
        //타임 인터벌 변수 초기화
        _second = 30;
        //타이머 시작 - 화면에 촬영시간 표시해주기
        _CountDownTimer =  [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
        self-&gt;_second -= 1;
        
        NSString *labelContent = [NSString stringWithFormat:@"미입력시 %0.2ld초 후 \n구조요청이 자동으로 발송 됩니다.", self-&gt;_second];
        
        //줄간격 조정
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelContent];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        //줄간격
        [paragraphStyle setLineSpacing:12];
        //가운데 정렬
        [paragraphStyle setAlignment:NSTextAlignmentCenter];
        //속성 셋팅
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelContent length])];
            
        //폰트를 넣어줘야 라벨 위치가 흔들리지 않는다.
        self-&gt;_countDownLabel.font = myfont;
        //라벨의 줄 라인 무한대로
        [self-&gt;_countDownLabel setNumberOfLines:0];
        
        self-&gt;_countDownLabel.attributedText = attributedString;
            
            
        if(self-&gt;_second == 0){
            
            //타이머 정지
            [self-&gt;_CountDownTimer invalidate];
            self-&gt;_CountDownTimer = nil;
            
            //타이머 라벨 및 변수 초기화
            self-&gt;_countDownLabel.text = [NSString stringWithFormat:@"미입력시 %0.2d초 후 \n구조요청이 자동으로 발송 됩니다.", 30];
            //폰트를 넣어줘야 라벨 위치가 흔들리지 않는다.
            self-&gt;_countDownLabel.font = myfont;
            //라벨의 줄 라인 무한대로
            [self-&gt;_countDownLabel setNumberOfLines:0];
            self-&gt;_second = 30;
            //자동으로 구조요청 sms 발송
            //[_recordButton sendActionsForControlEvents:UIControlEventTouchUpInside];
            
        }
    }];
}

 

+ Recent posts