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. Будет обновляться при отправлении приложения.