2013-05-16 18 views
7

私はUIのアプリケーション全体の外観を設定するのに幻想的な[[UINavigationBar appearance] set...を使用しています。しかし、私はSKStoreProductViewControllerを使用しており、すべてのスタイルを削除してデフォルトのApple UIを表示したいと考えています。奇妙なことに、何もせずに、私は本当のことを理解していない通常のUIと私のカスタムUIのミッシュマッシュを得ます。私はこのようなすべての私のUIの変化に対抗しようとしました:UINavigationBarの外観設定を既定値に戻します

[storeController.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
    [storeController.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: 
                  nil, UITextAttributeTextColor, 
                  nil, UITextAttributeTextShadowColor, 
                  nil]]; 

    [storeController.navigationController.navigationBar setTitleVerticalPositionAdjustment:0 forBarMetrics:UIBarMetricsDefault]; 
    [storeController.navigationController.navigationItem.leftBarButtonItem setBackgroundVerticalPositionAdjustment:0 forBarMetrics:UIBarMetricsDefault]; 

しかし、それは全く何の違いもありません。どうすればデフォルトのUI設定に戻すことができますか?

よろしく、
マイク

+1

メソッドを呼び出すときに 'navigationController'がすでに存在するかどうかを確認してください。 – akashivskyy

+0

また、別のnavigationBarオブジェクトでも動作しないようにしてください – pmk

+0

@akashivskyy、さて、みんな、私の所見です:「navigationController」は存在しません...これまで。 'navigationItem'は存在しますが、' navigationItem.leftBarButtonItem'は存在しません。奇妙な権利ですか? – Mackey18

答えて

7

[OK]を、私はこの問題を解決するために厄介な少しの回避策に頼らなければなりませんでした。私はこれがこれを行う一つの方法であるといつも知っていましたが、私はそれが厄介なので、それに頼る必要はありませんでした。

UINavigationControllerをサブタイプCustomNavigationViewControllerにサブクラス化し、それに全く変更を加えませんでした。つまり、それはUINavigationControllerですが、別の名前です。私は次に使用しました:

外観を設定し、私のカスタムクラスのNavigationControllerにのみ適用しました。 SKStoreProductViewControllerは私のカスタムクラスではないので、スタイリングは得られません。

これは私の意見では不快で不潔な修正ですが、動作します。

マイク。

+0

これは残念ながら現時点で唯一の解決策であるようです... – akashivskyy

0

あなたはUIAppearanceプロキシを使用して、これらのアイテムをスタイリングについては非常に特異的であることができます。 これには、特定のView Controllerクラスに含まれている場合にのみスタイリングを適用するメソッドがあります。

良いチュートリアルhereあります。その後、

+0

返事をありがとう。私はこれがうまくいきませんでした。しかし、私が試したことでした。それがうまくいかない理由は、ストアVC上で変更しようとしているものが 'navBar'内にあると考えられるため、' appearanceWhenContainedIn'' UINavigationBar'などはアプリ内の他のものと区別しません。その上に、 'Controller.navigatonController.navgiationBar'は明らかに存在しないので、そこでVCを編集することもできません。 – Mackey18

関連する問題