我尝试在iOS现有项目中添加第二个启动画面,这个项目太旧了,使用了xib。
所以我打算首先显示默认的启动画面,然后在登录页面后显示我自己的一个图像作为启动画面。
这是我到目前为止所做的事情
在我ViewController.m
创建的UIView
文件中添加了一个UIImageView
,但问题是我可以看到导航栏以及第二个启动画面。
我不想要那个导航栏。
请帮帮我 代码
ViewController.m in ViewDidload ()
self.navigationController.navigationBar.hidden=YES;
_splash.frame=CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
_splashImg.frame=_splash.frame;
[self.view insertSubview:_splash aboveSubview:_loginView];
[NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(runMethod) userInfo:nil repeats:NO];
[self.view addSubview:_splashView];
[self.view bringSubviewToFront:_splashView];
UIImageView *img=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"rss2.png"]];
img.frame=_splashView.frame;
[_splashView addSubview:img];
答案 0 :(得分:2)
Apple每个项目只允许一个启动画面。您可以通过创建新的视图控制器将自定义图像显示为初始图像。说 SplashViewController 。在SplashViewController的视图中添加imageView并设置启动图像。
如果要显示自定义启动,请加载 SplashViewController 。
在SplashViewController的ViewDidLoad中:
- (void)viewDidLoad{
[[self navigationController] setNavigationBarHidden:YES animated:YES];
[self performSelector:@selector(loadingNextView)
withObject:nil afterDelay:3.0f];
}
加载下一个视图的方法
- (void)loadingNextView{
// write code for pushing VC.
}
在您的下一个视图中,控制器的ViewDidLoad显示导航栏
[[self navigationController] setNavigationBarHidden:YES animated:YES];
答案 1 :(得分:1)
试试这个
隐藏导航栏:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
要表明:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
否则
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES]; //it hides
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO]; // it shows
}
答案 2 :(得分:1)
目前没有“正式”的方式来设置第二个闪屏,所以你要做的就是要走的路。我唯一的建议是将自定义初始屏幕视图添加到窗口而不是视图控制器的视图。将其添加到窗口(并相应地调整大小)将使您的自定义视图站在其他所有位置之上。您甚至可以创建一个新窗口并将其放置在UIStatusBar级别,以获得类似,更清晰的效果。
修改:添加示例代码
最简单的解决方案
UIWindow *window = [UIApplication sharedApplication].delegate.window;
_splash.frame = window.bounds;
[window addSubview:_splash];
...
// later, when you're done
[_splash removeFromSuperview];
对于创建新窗口的稍微复杂但更优雅的解决方案,请阅读UIWindow documentation。
答案 3 :(得分:1)
在AppDelegate
中您将导航控制器设置为根视图控制器,只需将您创建UIViewController作为根viewcontroller
。
几秒钟之后,你只需要performSelector
将根视图控制器更改为导航控制器,问题就解决了。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
SplashScreenController *viewCon=[[SplashScreenController alloc]
initWithNibName:@"SplashScreenController"
bundle:nil];
self.window.rootViewController= viewCon;
[self.window makeKeyAndVisible];
[self performSelector:@selector(loadNavigationController)
withObject:nil afterDelay:0.2f];
}
-(void)loadNavigationController{
HomeController *viewCon=[[HomeController alloc]
initWithNibName:@"HomeController"
bundle:nil];
self.nav=[[UINavigationController alloc]initWithRootViewController:viewCon];
self.window.rootViewController= self.nav;
}
这可以帮助您轻松解决问题。