Серый цвет фона при нажатии на прозрачный фон UIViewController внутри Контейнерного Представления (Раскадровка)

Я толкаю UIViewController (А) с clearColor в качестве фона в UINavigationController (N)

N помещается внутри контейнера. Это представление имеет фон, который я хочу показывать всегда.

Контейнер-UINavigation-PUSH

Затем, когда Push анимирован, он показывает серый / прозрачный фон в моем VC (A), и когда он заканчивает свою анимацию, он показывает правильно.

Есть ли способ избежать этого серого цвета?

Я "сделал" это, поместив белый вид фона в A и заставив его исчезнуть в viewDidAppear но я думаю, что это можно сделать без этого трюка...

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    __weak TestsViewController *weakSelf = self;
    [UIView animateWithDuration:.3 animations:^{
        TestsViewController *ownSelf = weakSelf;
        ownSelf.backgroundView.alpha = 0;
    }];
}

1 ответ

Решение

Установите цвет фона окна вашего приложения на белый:

// applicationDidFinishLaunching
self.window.backgroundColor = [UIColor whiteColor];

Анимация толчка часто заканчивается использованием цвета фона окна за прозрачными областями, а цвет фона окна по умолчанию прозрачен, поэтому он отображается черным через прозрачные панели навигации и панели инструментов.

РЕДАКТИРОВАТЬ: Извините, неправильно понял, в чем проблема. Когда вы нажимаете на контроллер представления с прозрачным фоновым цветом, фон, который вы видите за контроллером представления, является тенью, которая отображается за вашим контроллером представления (вы можете видеть край этого, когда в непрозрачном контроллере представления).

На этот вопрос есть ответ на ваш вопрос. По сути, вы должны реализовать собственный контроллер анимации, чтобы обеспечить анимацию перехода самостоятельно (как описано здесь). Вероятно, было бы проще продолжать использовать трюк, чем реализовывать собственный переход навигации.

Другие вопросы по тегам