2013-12-17 2 views
12

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

добавляется тень:

A shadow of view controller when animating

и свет накладку над нижним контроллером вида:

A light overlay

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

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

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

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

+0

вам удалось решить эту проблему? –

+0

Не без тяжелых изменений. – Legoless

+0

Пробовал ли вы использовать API-интерфейсы перехода контроллера iOS 7? objc.io/issue-5/view-controller-transitions.html – rounak

ответ

1

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

  • Скриншот входящий UIViewController
  • Анимируем прибытие UIImageView
  • Зов pushViewController:animated:, проходя NO для animated:
  • Удалить UIImageView
  • Опять же, немного взлома, но, возможно, это лучшее решение для вашего сценария.

    +0

    Thx, хорошая идея! –

    1

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

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

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

    +0

    Это решение работает только в том случае, если у вас нет других изображений в иерархии контроллера навигации ... так что это не очень полезно. – patr1ck

    +0

    @ patr1ck Вы можете подклассифицировать UIImageView и использовать свой подкласс везде, где нужно. Затем вы можете указать этот прокси только для UIImageView от Apple, который не будет применяться к вашему подклассу. – Gaston

    +1

    Это одобрено? – bangerang

    Смежные вопросы