2009-05-05 8 views
13

오랫동안 대기중인 작업이 진행 중일 때 많은 앱에서 사용하는보기의 검은 색/회색 모달 팝업 종류를 만드는 방법은 무엇입니까?iPhone SDK를 사용하여 "로드 중 ..."보기 만들기

처럼 웹 페이지를로드, 위치 기반 서비스를 사용하여, 화면이 어두워 가서 회전 아이콘을 보여주는 모달 뷰가 "기다려주십시오이 ..."다음 스크린 샷

예 :

Screenshot

답변

14

문서화되지 않은 API를 피하려면 MBProgressHUD을 살펴보십시오. 이는 UIProgressHUD와 유사하며 몇 가지 추가 기능을 제공합니다.

+0

URL은 404를 제공합니까? –

+2

죄송합니다. http://github.com/matej/MBProgressHUD에서 받으십시오. –

17

실제로 이것은 2.2.1 어쨌든 문서화되지 않은 UIProgressHUD입니다. 이 같은 일을 만듭니다

- (void) killHUD: (id)aHUD 
{ 
[aHUD show:NO]; 
[aHUD release]; 
} 

- (void) presentSheet 
{ 
id HUD = [[UIProgressHUD alloc] initWithWindow:[contentView superview]]; 
[HUD setText:@"Doing something slow. Please wait."]; 
[HUD show:YES]; 
[self performSelector:@selector(killHUD:) withObject:HUD afterDelay:5.0]; 
} 
+3

이것을 사용하고 App Store에 제출할 수 있습니까? –

+3

예, 이것은 비공개 API에 연결되지 않습니다. 우리는 UIAlertView의 버튼과 비슷한 것을했는데 문제없이 리뷰를 진행했습니다. – zoul

+0

나는 그것을 몰랐다 - 감사 zoul. –

4

당신이 전체를 다룰 것입니다 메인 윈도우의 하위 뷰를 같이하여 UIView를 추가 할 경우 :하는 .m에서

@interface UIProgressHUD : NSObject 
- (UIProgressHUD *) initWithWindow: (UIView*)aWindow; 
- (void) show: (BOOL)aShow; 
- (void) setText: (NSString*)aText; 
@end 

: 당신의 .H에서

을 UI. 부분적으로 투명하고 부분적으로 반투명하게 만들어 팝업처럼 보입니다.

이 예제는 fade the Default.png splash screen으로 시작하는 방법을 보여줍니다. 시작 방법은 응용 프로그램 대리인 (주 창에 대한 포인터 있음)에 몇 가지 메서드를 추가하여 진행률보기를 표시하고 해제하는 방법입니다.

+0

안녕 duncanwilcox, 나는 이것도 원했던 ... default.png 화면을 변색 ... :) 고마워 ... 내가 아직 물어 보지 않은 질문에 대답하는 것 같다 ... : D – Mugunth

4

문서화되지 않은 API를 사용하지 않고이를 수행하는 방법에 대한 예제는 Wordpress iPhone 앱 (http://iphone.wordpress.org/)을 살펴보십시오.

1

나는 이러한 목적으로을로드하는 LoadingHUDView를 사용하며 항상 작동합니다.

은 당신의 기본 클래스 (또는 무엇이든)이 도움이

#pragma mark ActivityIndicator Methods 

-(void) showModalActivityIndicator:(NSString *)message 
{ 
     loadingView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]retain];// origional 
     //loadingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; //testing 
     loadingView.backgroundColor = [UIColor grayColor]; //[UIColor colorWithRed:1 green:1 blue:1 alpha:0.3]; 
     LoadingHUDView *loadHud = [[LoadingHUDView alloc] initWithTitle:message]; 
     loadHud.center = CGPointMake(160, 290); 
     [loadingView addSubview:loadHud]; 
     [loadHud startAnimating]; 
     [loadHud release]; 
     [loadingView setAlpha:0.0]; 
      [self.tableView addSubview:loadingView]; 
     [UIView beginAnimations:@"fadeOutSync" context:NULL]; 
     [UIView setAnimationDelegate:self]; 
     [UIView setAnimationDuration:0.5]; 
     [loadingView setAlpha:0.5]; 
     [UIView commitAnimations]; 
} 

-(void) hideModalActivityIndicator { 
    if (loadingView) { 
    [UIView beginAnimations:@"fadeOutSync" context:NULL]; 
    [UIView setAnimationDidStopSelector:@selector (removeTranparentView) ]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDuration:0.5]; 
    [loadingView setAlpha:0]; 
    [UIView commitAnimations]; 
     } 
} 

-(void)removeTranparentView 
{ 
    [loadingView removeFromSuperview]; 
    [loadingView release]; 
    loadingView = nil; 
} 

HOPE에서 다음 LoadingHUDView.m 얻을 LoadingHUDView.h 및 않습니다. 는 완전히 문서화, 당신이

+0

다음과 같이 사용하십시오 : \t [self showModalActivityIndicator : @ "Logging you in ..."]; – thesummersign

11

내가 가장 간단한 (몇 줄의 코드를) 생각 감사하고 가장 아름다운 방법은 UIActivityIndicatorView으로 UIAlertView를 사용하는 것입니다

http://iosdevelopertips.com/user-interface/uialertview-without-buttons-please-wait-dialog.html

UIAlertView with UIActivityIndicatorView http://iosdevelopertips.com/wp-content/uploads/2010/02/alert3-204x300.png

+0

이것은 훌륭한 솔루션 이었지만 더 이상 iOS 7에서 작동하지 않습니다. – HughHughTeotl

0

XIB에서 파일, UIView 및 UIActivityIndicatorView를 배치하십시오. ActivityIndicatorView 속성 SetAnimated를 Yes로 설정하십시오.

@property (유지, 비 구조) IBOutlet UIView * m_LoadingView; 긴 작업을 시작하는 동안

는 과정을 완료 한 후보기

m_LoadingView.layer.cornerRadius = 10; 
m_LoadingView.center = self.view.center; 
[self.view addSubview:m_LoadingView]; 

에 LoadingView 추가 슈퍼 볼에서 LoadingView를 제거합니다. [m_LoadingView removeFromSuperView];

관련 문제