ios исчезает заставка (iphone 5 дружественный) - PullRequest
6 голосов
/ 08 февраля 2012

Я хочу подделать ощущение исчезновения основного заставки при вызове applicationDidBecomeActive, но он не работает.Что я делаю не так?

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(IS_IPHONE_5)
        splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]];
    else
        splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];

    [self.window.rootViewController.view addSubview:splash];

    [UIView animateWithDuration:0.5 
                     animations:^{
                         splash.alpha = 0;
                     }
                     completion:^(BOOL finished) {
                         [splash removeFromSuperview];
                     }];
}

Тогда вам нужно где-то определить следующее.Я использую проект .pch, но вы можете использовать свой заголовок, если хотите.

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

Ответы [ 4 ]

6 голосов
/ 15 октября 2013

Я считаю, что с ios6 вы получаете хороший переход, делая это

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UIView animateWithDuration:0.2
                          delay:0
                        options: UIViewAnimationCurveEaseIn
                     animations:^{
                        self.window.viewForBaselineLayout.alpha = 0; // and at this alpha
                     }
                     completion:^(BOOL finished){
                     }];

    return YES;
}

затем сразу в начале

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [UIView animateWithDuration:0.5
                          delay:0
                          options: UIViewAnimationCurveEaseOut
                      animations:^{
                         self.window.viewForBaselineLayout.alpha = 1; // and at this alpha
                     }
                     completion:^(BOOL finished){
                     }];

Дает эффект перекрестного затухания от экрана загрузки до экрана загруженного приложения.

3 голосов
/ 08 февраля 2012

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

Кроме того, заставка обычно не появляется каждый applicationDidBecomeActive:. didFinishLaunchingWithOptions: - это время, когда вы знаете, что вы были запущены, и заставка была показана от вашего имени.

3 голосов
/ 08 февраля 2012

Попробуйте добавить его прямо в окно вместо rootViewController.view.

[self.window addSubview:splash];

Вам также может понадобиться повернуть изображение с помощью view.transform, чтобы выровнять его с загрузочным изображением.

2 голосов
/ 08 февраля 2012

Ваш код выглядит правильно;Я делаю это в нескольких приложениях.

Однако вы хотите сделать это как часть applicationDidFinishLaunching:options:, а не как applicationDidBecomeActive:.Имеет смысл только скрыть заставку, когда она отображается, то есть только тогда, когда приложение запущено и еще не запущено.Когда ваше приложение становится активным, оно может находиться в фоновом режиме - то есть уже запущено - поэтому исчезновение заставки в этом случае не имеет смысла.

Или вы хотели, чтобы появился экран заставки?ВСЕГДА, когда он становится активным, даже если он возобновляется с фона из приостановленного состояния?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...