2013-12-17 227 views
12

在iOS 7中創建了一個新的推動動畫,它將推送的視圖控制器滑動到層次結構頂部。但是,當動畫時,iOS設備顯然是做了兩件事修改頂視圖控制器的設計:iOS 7 UINavigationController推動動畫陰影

添加陰影:

A shadow of view controller when animating

和底部的視圖控制器光疊加:

A light overlay

在大多數應用中,這不是問題。但是,我目前正在研究具有像素完美設計的應用程序,並使用具有清晰背景的視圖控制器。但是這個功能保持不變,並且光線覆蓋圖出現在視圖控制器上。由於背景爲白色漸變,因此此光線疊加層(屏幕截圖2)非常明顯,動畫完成後,它將被刪除而不顯示動畫,這使其非常引人注目且令人討厭。

我知道我可以創建自定義動畫和過渡,但我想知道:

有什麼辦法刪除(或修改)此光覆蓋和陰影,而無需創建自定義的轉換?

謝謝你的幫助。

+0

您是否設法解決這個問題? –

+0

不是沒有重大修改。 – Legoless

+0

您是否嘗試使用iOS 7的自定義視圖控制器轉換API? objc.io/issue-5/view-controller-transitions.html – rounak

回答

1

這不是最優雅的解決方案,但我看過人們使用UIImage動畫來顯示他們想要顯示的內容。所以,你可以:

  • 截圖傳入UIViewController
  • 動畫一個UIImageView
  • 呼叫pushViewController:animated:的到來,經過NOanimated:
  • 取出UIImageView
  • 再次,有點的黑客,但也許這是您的方案的最佳解決方案。

    +0

    Thx,好主意! –

    1

    試試這個代理

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

    我不知道如果蘋果允許這不是因爲它使用私有API。將在應用提交時更新。

    +0

    只有當您的導航控制器層次結構中沒有任何其他圖像視圖時,此解決方案纔有效......所以,這不是非常有用。 – patr1ck

    +0

    @ patr1ck您可以繼承UIImageView並在任何需要的地方使用您的子類。然後你可以指定這個代理只適用於Apple的UIImageView,它不適用於你的子類。 – Gaston

    +1

    這是否獲得批准? – bangerang