如何根据特定用户动态更改启动画面?

时间:2015-08-12 10:33:06

标签: ios splash-screen

我正在开发学校应用程序和管理面板。在第一次打开应用程序时,它将显示我公司的启动画面,在我的应用程序中,我将为父母提供登录凭据。登录到应用程序后,它会将该用户注册到特定的学校。下次当用户打开应用程序时,它应该显示特定的学校启动画面在管理面板中添加了什么学校。

如果可能的话?如何实现?

提前致谢。

3 个答案:

答案 0 :(得分:4)

是的,您应该使用自定义初始屏幕视图控制器。 请参阅以下链接并按照步骤操作。

https://nullpointr.wordpress.com/2012/02/19/iphone-dev-how-to-implement-a-splash-screen/

UIImageView*imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"your_default_image_or_another.png"]];
[[firstViewController view] addSubview:imageView];
[[firstViewController view] bringSubviewToFront:imageView];

// as usual
[self.window makeKeyAndVisible];

//now fade out splash image
[UIView transitionWithView:self.window duration:1.0f options:UIViewAnimationOptionTransitionNone animations:^(void){imageView.alpha=0.0f;} completion:^(BOOL finished){[imageView removeFromSuperview];}];

在此,您可以使用自己的图像或从不同学校的Web服务下载图像,并在imageview中设置。

答案 1 :(得分:3)

  

在第一次打开应用程序时,它必须显示我的公司飞溅   屏幕,在我的应用程序中,我获得了父母的登录凭据。后   登录到应用程序,它必须将该用户注册到特定的学校。

一个简单的方法是在你的AppDelegate中设置一个BOOL,以测试它是否是你应用的第一次启动。

AppDelegate.m中,您可以通过在

中执行此类操作来检查它是否是第一次加载应用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Check if app has loaded before
    [self checkUserDefaults];
    // Another method to determine what the first screen the user sees is
    [self setInitialViewController];
    return YES;
}

...再往下,你可以做something like this

// make a section for UserDefaults
#pragma mark - User Defaults

- (void)checkUserDefaults {

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasLaunchedOnce"])
    {
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"hasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
  

下次用户打开应用时,必须显示特定的学校启动画面   在管理面板中添加了什么学校。如果可能的话?怎么样?

您还可以在AppDelegate中根据NSUserDefaults创建一个确定下一步的方法:

- (void)setInitialViewController {
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;

    // Check if there's a key created or if the key exists
    if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"hasLaunchedOnce"]boolValue] == NO || ![[NSUserDefaults standardUserDefaults] boolForKey:@"hasLaunchedOnce"]) {
        // set to instantiate first launch VC
        UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"initialVC"];
        self.window.rootViewController = rootViewController;
    } else {
        UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"schoolSelectedVC"];
        self.window.rootViewController = rootViewController;
    }
    [self.window makeKeyAndVisible];
}

在初始场景的某个位置上,您想要更新NSUserDefaults以反映已为其选择的学校进行了配置。

        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasLaunchedOnce"];

答案 2 :(得分:0)

使用您自己的启动画面视图控制器。

使用userdeafult来保存它的状态 - 如果你想让它只工作一次,或者只在应用程序不在内存中时 -

使用委托方法或通知中心 - 任何具有回调功能的东西 - 或常规方法并检查您需要的条件,并且每个条件根据需要通过显示/隐藏,UIAnimation或甚至刷新整个UI来更改UI

希望这可以帮到你。