IOS 7 UINavigationController Push анимация тень

С iOS 7 была создана новая push-анимация, которая перемещает толкаемый контроллер представления поверх иерархии. Но когда происходит анимация, iOS, видимо, делает две вещи, чтобы изменить дизайн контроллера верхнего уровня:

Добавлена ​​тень:

A shadow of view controller when animating

И наложение сверху на контроллер снизу:

A light overlay

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

Я знаю, что могу создавать пользовательские анимации и переходы, но мне интересно:

Есть ли способ удалить (или изменить) этот оверлей и тень света без создания пользовательских переходов?

Благодарим вас за помощь.

Ответ 1

Это не самое элегантное решение, но я видел, как люди использовали анимацию UIImage, чтобы показать, что они хотят показать. Итак, вы могли:

Снимите скриншот входящего UIViewController Анимируйте приход UIImageView Вызовите pushViewController:animated: , перейдя NO для animated: Удалите UIImageView

Опять же, немного взломать, но, возможно, это лучшее решение для вашего сценария.

Ответ 2

Попробуйте этот прокси

[[UIImageView appearanceWhenContainedIn:NSClassFromString(@"_UIParallaxDimmingView"), nil] setAlpha:0.0f];

Я не знаю, разрешает ли Apple это или нет, потому что использует частный API. Будет обновляться при отправлении приложения.