如何将UIActivityIndicator添加到初始屏幕?
编辑:我尝试了以下内容
我创建了名为SplashViewController的UIViewController Sub类。并且代码如下,图像仍然没有持续足够长的时间。
答案 0 :(得分:3)
如果“启动画面”是指您的应用启动时显示的图像,答案是您不能。
您可以做的是拥有一个初始视图,其中包含一个看起来就像您的启动图像的背景图像,然后在该视图中添加一个活动指示器。对用户而言,活动指示符似乎是您的启动图像的“一部分”。
诀窍是尽快加载你的初始笔尖(保持小而简单),这样静态图像就会转换为你可以立即操作的视图。
答案 1 :(得分:1)
这取决于启动画面的含义。如果您的意思是运行应用程序时首次显示的图像,那么我们就会遇到更棘手的情况。这只是一个静态图像(Default.png),那么您需要做的是创建一个以启动画面图像为背景的视图,在其上添加活动指示器视图,然后直接添加该视图应用代表。当您加载任何内容时,您可以摆脱此视图并继续执行其余程序。可能在NIB中更容易做,但是这里有一个以编程方式的想法:
- (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];
}
答案 2 :(得分:1)
Hi Pradeep我在ios的monotouch中实现了这个代码,所以这段代码有助于实现你的逻辑
#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()
方法
FinishedLaunching
方法
答案 3 :(得分:0)
UIActivityIndicators是UIViews,可以像其他任何一样添加。
像这样的东西: [myView addSubview:mySpinner];或者只是在你的NIB中放一个。