4

スプラッシュ画面のように、アプリの開始時に別の画像を取得しています。次に、コーディングに配置した実際の画像を取得しています。次のコードを含むスプラッシュ スクリーンをdidFinishLaunchingWithOptions:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{    
    
    self.window.rootViewController = self.tabBarController;
    self.tabBarController.delegate=self;
    [window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];

    LoginViewController *vc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    self.loginNav = [[UINavigationController alloc] initWithRootViewController:vc];
    
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if([userDefaults valueForKey:@"UserName"] &&[userDefaults valueForKey:@"Password"])
    {
        vc.username=[userDefaults valueForKey:@"UserName"];
        vc.password=[userDefaults valueForKey:@"Password"];
        vc.autoLogin=YES;
        [vc loginSelectorMethod];
    }
    
    else
    {
        [self.window addSubview:self.loginNav.view];
        [self.window makeKeyAndVisible];
    }
    
    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    splashView.image = [UIImage imageNamed:@"splashscreen.png"];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [self performSelector:@selector(removeSplash) withObject:nil afterDelay:3.0]; 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    NSLog(@"Registering for remote notifications"); 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    
    return YES;
}

スプラッシュ スクリーンが表示される前に、「Arrow.png」イメージが表示されてから、スプラッシュ スクリーンが表示されます。「Arrow.png」を削除すると、その画像の代わりに別の画像が表示されます。つまり、「aboutus.png」のように続きます。

プロジェクトで「Arrow.png」を検索しました。これは、コーディングのプロジェクト全体で一度だけ表示されます。

4

3 に答える 3

3

ここでは、subiviewを次のようなタブバーとして追加します。

[window addSubview:tabBarController.view];

以下のようにloginviewを追加した後。

[self.window addSubview:self.loginNav.view];

その後、次のようなスプラッシュスクリーンを追加します。

    splashView.image = [UIImage imageNamed:@"splashscreen.png"];
    [window addSubview:splashView];

つまり、これは、スプラッシュスクリーンではなくスクリーンよりも多く見られる問題です。

以下のコードを使用してください...

   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{   
   splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    splashView.image = [UIImage imageNamed:@"splashscreen.png"];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [self performSelector:@selector(removeSplash) withObject:nil afterDelay:3.0]; 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    NSLog(@"Registering for remote notifications"); 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

    return YES;
}

メソッドでremoveSplash、このビューを次のようなウィンドウのサブビューとして追加します。

-(void)removeSplash{
[splashView removeFromSuperView];
LoginViewController *vc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    self.loginNav = [[UINavigationController alloc] initWithRootViewController:vc];

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if([userDefaults valueForKey:@"UserName"] &&[userDefaults valueForKey:@"Password"])
    {
        vc.username=[userDefaults valueForKey:@"UserName"];
        vc.password=[userDefaults valueForKey:@"Password"];
        vc.autoLogin=YES;
        [vc loginSelectorMethod];
    }

    else
    {
        [self.window addSubview:self.loginNav.view];
        [self.window makeKeyAndVisible];
    }
}
于 2013-01-10T10:29:46.250 に答える
2

プロジェクト設定で起動画像を設定しましたか、またはプロジェクトバンドルに「Default.png」という名前の画像を入れましたか?この種の画像は、アプリの起動中にOSによって自動的に検出されます。この2つのポイントを確認してください。

編集:-

問題は、TabBar&LoginViewとsplaceImageの競合です。

これについては、以下のことを行ってください。これにより、二重画像の問題が解決されます。

まず、DidFinishLaunching()メソッドに以下のコードを入力します

//splace画像を表示する時間の秒
数int64_tdelayInSeconds= 5.0;

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    //Do need Full like Add Login View or Add TabbBar 
    
    //Remove SplaceImageView From Window 
});

splashView = [[UIImageView alloc] initWithFrame:self.window.frame];
splashView.image = [UIImage imageNamed:@"Default-Portrait~ipad.png"];
[self.window addSubview:splashView];
[self.window bringSubviewToFront:splashView];
return YES;

また、もう1つ、次のようなデフォルトのsplace画像を追加します。

iPhonePortraitDefault.pngの場合。
iPadの場合、Portrait Default-Portrait〜ipad.png
は、デフォルト画像のAppleドキュメントとして続き、チェックします。

于 2013-01-10T10:30:15.807 に答える
1
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary 

    *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
        
        self.sql_ = [SQLDb initEngine];
        
        
        [self setupControllers]; /// Set up Yor ToolBar Controller
        
        self.hvController = [[HomeViewController alloc] init];
        self.window.rootViewController = self.hvController;
        
        [self.window makeKeyAndVisible];
        
        [self setupSplash];
    
       return YES;
    }
    
    -(void) setupSplash
    {
        self.imvSplash = [[UIImageView alloc] initWithFrame:self.window.bounds];
        
        if( IS_IPHONE_5 )
            [self.imvSplash setImage: [UIImage imageNamed:@"Default-568h@2x.png"]];
        else
            [self.imvSplash setImage: [UIImage imageNamed:@"splash.png"]];
        
        [self.window addSubview: self.imvSplash];
        
        [NSTimer scheduledTimerWithTimeInterval:2.0f     target:self selector:@selector(hideSplash:) userInfo:nil   repeats:NO];
    }
    
    - (void)hideSplash:(NSTimer *)theTimer
    {
        [UIView animateWithDuration:1.0
                                              delay:0.1
                                           options: UIViewAnimationCurveEaseOut
                                     animations:^{
                                                            self.imvSplash.alpha = 0.0;
                                                            self.ngNavigationController.view.alpha = 1.0;
                                                        }
                                                        completion:^(BOOL finished)
                                                        {
                                                             //[self.ngController setupImageAction];
                                                             [self.imvSplash removeFromSuperview];
                                                         }];
    }
于 2013-01-10T10:36:45.817 に答える