2010-10-19 2 views
2

Как добавить идентификатор UIActivityIndicator в заставку?Как добавить идентификатор UIActivityIndicator в заставку в приложении iphone?

Edit: я попытался следующие вещи

Я создал UIViewController класс с именем Sub SplashViewController. и код выглядит так, как показано ниже, но изображение не сохраняется достаточно долго.

+0

Мое решение .. работает прекрасно: http://stackoverflow.com/questions/9568314/splash-screen-fade-with-activity-indicator-there-u- go –

ответ

0

UIActivityIndicators являются UIViews и могут быть добавлены, как и любые другие.

что-то вроде: [myView addSubview: mySpinner];

Или просто поместите его в свой NIB.

вот еще один ответ: How to use activity indicator view on iPhone?

+0

Я знаю, как их использовать, но как добавить его в заставку? – pradeep

3

Если под «заставкой» вы имеете в виду изображение, которое будет отображаться, когда ваше приложение запускает, ответ в том, что вы не можете.

Что вы можете сделать, это иметь исходное представление, которое включает фоновое изображение, которое выглядит так же, как и образ запуска, а затем добавить в этот индикатор индикатор активности. Пользователю будет казаться, что индикатор активности является «частью» вашего образа запуска.

Хитрость заключается в том, чтобы как можно быстрее загрузить ваш первоначальный наконечник (держите его маленьким и простым), чтобы статические изображения переходили к виду, с которым вы можете сразу манипулировать.

+0

Итак, нужно создать отдельный класс UIView и файл NIB и добавить к нему фоновое изображение и идентификатор UIActivityIndicator r8? – pradeep

+0

Да. Для простоты вам также может понадобиться создать отдельный контроллер просмотра, чтобы управлять всем этим для вас. Это диспетчер представлений, изначально загружаемый вашим приложением. –

+1

Точно. Обычно я называю вид что-то вроде LoadViewController и делаю его похожим на изображение Default.png, но с индикатором загрузки. Вы можете назвать это представление как модальный из вашего метода делегирования didFinishLaunchingWithOptions. – stitz

1

Это зависит от того, что вы подразумеваете под заставкой. Если вы имеете в виду изображение, которое сначала отображается при запуске приложения, то у нас есть более сложная ситуация. Это просто статическое изображение (Default.png), поэтому вам нужно будет создать представление, в котором изображение вашего заставки будет отображаться в качестве фона, добавить вид индикатора активности поверх него, а затем добавить этот вид непосредственно из делегат приложения. Когда все, что вы загружаете, сделано, вы можете избавиться от этого представления и продолжить работу с остальной частью вашей программы. Вероятно, проще сделать в СИБ, но вот идея этого программно:

- (void)loadView; 
{ 
    CGRect r = [UIScreen mainScreen].applicationFrame; 
    UIView *activityView = [[[UIView alloc] initWithFrame:r] autorelease]; 
    self.view = activityView; 

    activityView.backgroundColor = [UIColor blackColor]; 
    activityView.alpha = 0.5; 

    UIImageView *imgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]] autorelease]; 
    [activityView addSubview:imgView]; 

    CGRect wheelR = CGRectMake(r.size.width/2 - 12, r.size.height/2 - 12, 24, 24); 
    UIActivityIndicatorView *activityWheel = [[UIActivityIndicatorView alloc] initWithFrame:wheelR]; 
    activityWheel.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite; 
    activityWheel.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | 
            UIViewAutoresizingFlexibleRightMargin | 
            UIViewAutoresizingFlexibleTopMargin | 
            UIViewAutoresizingFlexibleBottomMargin); 
    [activityWheel startAnimating]; 
    [activityView addSubview:activityWheel]; 
} 
+0

Спасибо, но он отображает изображение больше размера экрана. как он может быть экранирован? – Dejell

1

Привет Прадипом Я реализовать этот код в MonoTouch для ИОС поэтому этот код поможет FUL реализовать логику

#region Splash Screen 
public void ShowSplash(){ 
// get the Height & Width of device Screen 
float mainSrcWidth = this.View.Bounds.Width; 
float mainSrcHeight = this.View.Bounds.Height; 
splashScreen = new UIImageView (UIImage.FromFile ("Images/loadNew1536_2008.png")); 
splashScreen.Frame = new RectangleF (0, 0, mainSrcWidth, mainSrcHeight);  
//Start the thread; 
ThreadPool.QueueUserWorkItem (delegate { 
Load(); 
} 
) 
this.View.AddSubview(splashScreen); 
} 
#endregion 


#region Load() splashscreen 
private void Load() 
//Sleep for 3 seconds to simulate a long load. 
Thread.Sleep (new TimeSpan (0, 0, 0, 3)); 
this.BeginInvokeOnMainThread (delegate { 
splashScreen.RemoveFromSuperview(); 
splashScreen = null; 
}); 
} 
#endregion 

Вызов метода ShowSplash() из AppDelegate класса из FinishedLaunching метода

+0

Я согласен с Kris Markel, но вы можете добавить к нему статические изображения во время загрузки приложения – 2012-09-18 06:09:49

Смежные вопросы