As a newcomer to IOS programming this particular issue on my first app took a bit of working out so this is a tutorial for others struggling with the same issue. The ultimate objective of this code is to get a out like shown below Firstly things to note. I am not entirely sure this is the best way as I have only been doing IOS for a short while but it works for me. So I suggest Firstly start by creating a method where you start the whole thing off (probably triggered from a button press- in this sample it is showNearby. Secondly create a NSTimer and start it immediately calling the show activity selector Thirdly start your marker/pin loading method using the performSelectorInBackground method. Finally remove the indicator when you have completed your marker/pin showing / loading The code for this is shown here.UI components need to stay on the main thread, the main thread needs to perform the UI updates. (Cocoa Fundamentals Guide, page 164: “All UIKit objects should be used on the main thread only.”)
This tutorial/code sample is about adding a UIActivityIndicatorView programmatically
You will need #import
in this code activityIndicator is a property
That’s it you will have a activity indicator that appears whilst loading and is removed once done.-(IBAction)showNearby:(id)sender
{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(ShowActivityIndicator) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];
[self performSelectorInBackground:@selector(loadMarkers) withObject: nil];
}
-(void) ShowActivityIndicator
{
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge] ;
CGRect frame = activityIndicator.frame;
frame.origin = CGPointMake(290, 12);
frame.size = CGSizeMake(100, 100);
activityIndicator.backgroundColor=[UIColor blackColor];
CALayer *layer =[activityIndicator layer];
layer.cornerRadius = 8.0;
activityIndicator.alpha=0.7;
activityIndicator.frame = frame;
activityIndicator.center = self.view.center;
activityIndicator.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
activityIndicator.tag = 2;
[self.view addSubview:activityIndicator];
[self.view bringSubviewToFront:activityIndicator];
[activityIndicator startAnimating];
}
-(void) loadMarkers
{
//code to load markers then remove activityIndicator
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
}
'iOS' 카테고리의 다른 글
iOS5에서 NSJSONSerialization을 사용해서 JSON 다루기 예제 (0) | 2012.08.28 |
---|---|
GCD와 Block을 이용해서 비동기 방식으로 URL 이미지 로드하기 (0) | 2012.08.27 |
UIProgressHUD / 어플 실행 및 , 데이터 호출시 "로딩중" 메세지처리 (0) | 2012.08.27 |
aes-128을 사용한 app과 server의 통신 (1) | 2012.08.26 |
PullToRefresh iOS 5 and ARC Tutorial (0) | 2012.08.22 |