2013-12-17 18 views
12

Z iOS 7 utworzono nową animację push, która przesuwa kontrolkę widoku pchanego na górę hierarchii. Ale gdy animacja dzieje, iOS najwyraźniej robi dwie rzeczy zmodyfikować konstrukcję górnej regulatora Widok:iOS 7 UINavigationController Wciśnięcie cienia animacji

Cień w brzmieniu:

A shadow of view controller when animating

i światłem nakładkę nad dolnym kontrolera widoku:

A light overlay

W większości przypadków nie jest to problem. Ale obecnie pracuję nad aplikacją o perfekcyjnym projekcie pikseli i używam kontrolerów widoku z czystym tłem. Ale ta funkcja pozostaje taka sama, a nakładka światła pojawia się nad kontrolerem widoku. Ponieważ tło jest białym gradientem, ta nakładka światła (na zrzucie 2) jest bardzo widoczna, a po zakończeniu animacji jest usuwana bez animacji, co czyni ją bardzo zauważalną i denerwującą.

Jestem świadomy mogę tworzyć niestandardowe animacje i przejścia, ale zastanawiam się:

Czy istnieje jakiś sposób, aby usunąć (lub zmodyfikować) tej nakładki światła i cienia, bez konieczności tworzenia niestandardowych przejścia?

Dziękuję za pomoc.

+0

Czy udało Ci się to rozwiązać? –

+0

Nie bez ciężkich modyfikacji. – Legoless

+0

Czy próbowałeś korzystać z niestandardowych interfejsów API przejścia kontrolera widoku iOS 7? objc.io/issue-5/view-controller-transitions.html – rounak

Odpowiedz

1

To nie jest najbardziej eleganckie rozwiązanie, ale widziałem, jak ludzie używają animacji UIImage, aby pokazać, co chcą pokazać. Więc może:

  • Zrzut przychodzące UIViewController
  • Animacja nadejście UIImageView
  • Wezwania pushViewController:animated:, przechodząc NO dla animated:
  • Zdjąć UIImageView
  • znowu trochę hack, ale być może jest to najlepsze rozwiązanie dla twojego scenariusza.

    +0

    Thx, dobry pomysł! –

    1

    wypróbować proxy

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

    Nie wiem, jeśli Apple pozwala na to, czy nie, ponieważ używa prywatną API. Aktualizuje się po przesłaniu aplikacji.

    +0

    To rozwiązanie działa tylko wtedy, gdy nie ma żadnych innych widoków obrazu w hierarchii kontrolera nawigacyjnego ... więc nie jest to zbyt użyteczne. – patr1ck

    +0

    @ patr1ck Możesz podklasę UIImageView i użyć swojej podklasy wszędzie, gdzie jest to potrzebne. Następnie możesz określić to proxy tylko dla UIImageView Apple'a, które nie będzie miało zastosowania do Twojej podklasy. – Gaston

    +1

    Czy to zostało zatwierdzone? – bangerang

    Powiązane problemy