2013-05-16 12 views
7

UI'm için uygulamanın geniş görünümlerini ayarlamak için fantastik [[UINavigationBar appearance] set... sürümünü kullanıyorum. Ancak, SKStoreProductViewController kullanıyorum ve tüm stilimi kaldırmak istiyorum, böylece varsayılan Apple kullanıcı arayüzünü gösteriyor. Garip bir şekilde, hiçbir şey yapmadan, normal kullanıcı arayüzünün ve gerçekten de anlamadığım özel UI'mın küçük bir püresini alırım.UINavigationBar için görünüm ayarlarını varsayılana geri sıfırla

[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]; 

Ama bu hiç fark yaratmak, çalışmak için görünmüyor: Böyle tüm UI değişiklikleri mücadele denedim. Varsayılan kullanıcı arayüzü ayarlarına nasıl geri yükleyebilirim?

Selamlar,
Mike

+1

Yöntemlerinizi çağırdığınızda 'navigationController' zaten var mı kontrol edin. – akashivskyy

+0

Ayrıca farklı navigationBar nesneler üzerinde çalışmamaya dikkat edin – pmk

+0

@akashivskyy, Tamam o zaman çocuklar, benim bulgularım: navigasyonController 'var ... hiç yok. 'navigationItem' var, ancak' navigationItem.leftBarButtonItem' mevcut değil. Garip değil mi? – Mackey18

cevap

7

Tamam, bu sorunu çözmek için küçük kötü bir çözüm başvurmak zorunda kalmıştım. Bunu her zaman yapmanın bir yolu olacağını bilmeme rağmen, buna karmakarışık olmak istemediğim için başvurmak istemedim.

UINavigationController alt sınıfına CustomNavigationViewController gibi bir alt şeye gizlenir ve hiçbir değişiklik yapılmaz. Yani başka bir deyişle, UINavigationController ama farklı bir isimle. Daha sonra, yalnızca özel sınıfımdaki NavigationControllers'lara uygulayarak görünümü ayarlamak için

[[UINavigationBar appearanceWhenContainedIn:[CustomNavigationViewController class], nil] set.... . SKStoreProductViewController açıkçası benim özel sınıfımdan değil ve bu yüzden onun için stil oluşturmuyor.

Bu, bence kirli, kirli bir çözümdür, ancak işe yarıyor.

Mike.

+0

Bu maalesef şu anda tek çözüm gibi görünüyor ... – akashivskyy

0

Sen UIAppearance proxy kullanarak bu öğeleri igili oldukça özel olabilir. THis, stili yalnızca belirli bir görünüm denetleyicisi sınıfında bulunduğunda uygulayan bir yönteme sahiptir.

iyi öğretici here var: o zaman

+0

Cevabınız için teşekkür ederiz. Korkarım bu işe yaramadı. Yine de denediğim bir şeydi. Çalışmamanın sebebi, mağaza VC'sinde değiştirmeye çalıştığımız şeylerin bir navBar'da, dolayısıyla 'ViewWhenContainedIn' UINavigationBar'da olduğu düşünüldüğünde, uygulamanın diğerlerinden farklılaşmamasıdır. . Bunun üzerine: "Controller.navigatonController.navgiationBar", görünüşe göre mevcut değil, dolayısıyla da orada VC'yi düzenleyemiyoruz. – Mackey18

İlgili konular