Notice
Recent Posts
Recent Comments
Link
투케이2K
101. (Objective-C/objc) UIActivityIndicatorView 사용해 로딩 프로그레스 바 표시 팝업창 활성 실시 본문
Objective-C
101. (Objective-C/objc) UIActivityIndicatorView 사용해 로딩 프로그레스 바 표시 팝업창 활성 실시
투케이2K 2022. 9. 23. 08:34[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : OBJECTIVE-C
[소스 코드]
// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
printf("\n");
printf("==================================== \n");
printf("[ViewController >> testMain() :: 테스트 메소드 수행] \n");
printf("==================================== \n");
printf("\n");
// [try catch 구문 정의 실시]
@try {
// [로딩 동작 실시]
[self startLoading];
// [dispatch_after 사용해 일정 시간 후 종료 메소드 동작 실시]
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self stopLoading];
});
}
@catch (NSException *exception) {
printf("\n");
printf("==================================== \n");
printf("[ViewController >> catch :: 예외 상황 확인] \n");
printf("[name :: %s] \n", exception.name.description.UTF8String);
printf("[reason :: %s] \n", exception.reason.description.UTF8String);
printf("==================================== \n");
printf("\n");
}
}
// MARK: - [로딩 표시 동작 시작 수행 : void 메소드 구현]
- (void)startLoading {
printf("\n");
printf("==================================== \n");
printf("[ViewController >> startLoading() :: 로딩 표시 동작 시작 수행] \n");
printf("==================================== \n");
printf("\n");
// [try catch 구문 정의 실시]
@try {
// [객체 선언 실시]
UIView *indicatorView;
UIActivityIndicatorView *activityIndicator;
UILabel *labelLoading;
// [indicator 전체 영역 부분]
indicatorView = [[UIView alloc]initWithFrame:CGRectMake([UIApplication sharedApplication].keyWindow.frame.size.width/2-50, [UIApplication sharedApplication].keyWindow.frame.size.height/2-30 , 100, 100)];
indicatorView.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.8f]; // [투명도 설정]
[[UIApplication sharedApplication].keyWindow addSubview:indicatorView]; // [뷰에 추가]
indicatorView.layer.cornerRadius = 8; // [코너 둥글기 설정]
[[indicatorView layer] setBorderWidth:1.0f]; // [굵기]
[[indicatorView layer] setBorderColor:[UIColor whiteColor].CGColor]; // [하얀색 색상]
indicatorView.clipsToBounds = YES;
indicatorView.tag = 50;
// [로딩 바 영역 부분]
activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(indicatorView.frame.size.width/2-15, 20, 30, 30)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhiteLarge]; // [스타일 설정]
activityIndicator.tag = 51;
//activityIndicator.backgroundColor=[UIColor blackColor]; // [로딩 바 배경 색상]
[indicatorView addSubview:activityIndicator]; // [뷰에 추가]
[activityIndicator startAnimating]; // [애니메이션 시작]
// [로딩 표시 텍스트 부분]
labelLoading = [[UILabel alloc]initWithFrame:CGRectMake(0, indicatorView.frame.size.height-30, indicatorView.frame.size.width, 20)];
labelLoading.text = @"Loading ..."; // [텍스트]
labelLoading.textColor = [UIColor whiteColor]; // [폰트 색상]
labelLoading.textAlignment = NSTextAlignmentCenter; // [폰트 정렬]
labelLoading.font = [UIFont fontWithName:@"YanaR-Bold" size:11]; // [폰트 스타일]
labelLoading.tag = 52;
[labelLoading setFont:[UIFont boldSystemFontOfSize:12.0f]]; // [폰트 굵기]
[indicatorView addSubview:labelLoading]; // [뷰에 추가]
}
@catch (NSException *exception) {
printf("\n");
printf("==================================== \n");
printf("[ViewController >> startLoading :: catch :: 예외 상황 확인] \n");
printf("[name :: %s] \n", exception.name.description.UTF8String);
printf("[reason :: %s] \n", exception.reason.description.UTF8String);
printf("==================================== \n");
printf("\n");
}
}
// MARK: - [로딩 표시 동작 종료 수행 : void 메소드 구현]
- (void)stopLoading {
printf("\n");
printf("==================================== \n");
printf("[ViewController >> stopLoading() :: 로딩 표시 동작 종료 수행] \n");
printf("==================================== \n");
printf("\n");
// [try catch 구문 정의 실시]
@try {
// [객체 선언 실시]
UIView *indicatorView;
UIActivityIndicatorView *activityIndicator;
UILabel *labelLoading;
// [뷰에서 제거 실시]
indicatorView = [[UIApplication sharedApplication].keyWindow viewWithTag:50];
activityIndicator = [indicatorView viewWithTag:51];
labelLoading = [indicatorView viewWithTag:52];
[labelLoading removeFromSuperview];
[activityIndicator removeFromSuperview];
[indicatorView removeFromSuperview];
}
@catch (NSException *exception) {
printf("\n");
printf("==================================== \n");
printf("[ViewController >> stopLoading :: catch :: 예외 상황 확인] \n");
printf("[name :: %s] \n", exception.name.description.UTF8String);
printf("[reason :: %s] \n", exception.reason.description.UTF8String);
printf("==================================== \n");
printf("\n");
}
}
[결과 출력]
반응형
'Objective-C' 카테고리의 다른 글
Comments