2013-02-01 17 views
5

Tablo görünümlerimde gezinme çubuğu için özel bir gölge görüntüsü ayarlamaya çalışıyorum, ancak yalnızca bazı görünümlerde gösteriliyor. Tablo görünümlerimin stillerini ayarlamak için süper bir sınıf oluşturdum. Uygulamamı başlayan gördüğümüz görünümünde NavigationBar setShadowImage her zaman çalışmıyor

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Set navigation bar background 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground.png"] forBarMetrics:UIBarMetricsDefault]; 

    // Set navigation bar shadow imag 
    [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

, hiçbir gölge gösterdi. Ancak ' yeni öğe ekle' tablo görünümünü açmak için gezinme çubuğumdaki [+] düğmesine dokunduğumda, bir gölge gösterir.

Burada birisi bana doğru yönde işaret edebilir mi?

+0

Görünüm proxy'sini kullanmalısınız. – dasdom

+0

Teşekkürler. Bunu denedim ama aynı sonuçla. – lsdevries

+0

'viewDidLoad'da' self.navigationController' '' nil' olmadığından emin olun! – MoLice

cevap

7

Görünüm proxy'si çalışmalıdır.

Başlamadan önce bir yere (örneğin AppDelegate'inizde) arayın.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self customizeAppearance]; 
    return YES; 
} 

- (void) customizeAppearance 
{ 
    // Set the background image for *all* UINavigationBars 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground"] forBarMetrics:UIBarMetricsDefault]; 

    // Set the shadow image for *all* UINavigationBars 
    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

    //add other appearance stuff here... 
} 

İçindeki birden UINavigationController yıllardan bir film şeridi ve bir demet oluşturmak Ancak eğer segue en iterek gezinti kontrol Diyelim ki burada sorun olabilir bozuk görünüm denetleyici yapısını alabilirsiniz.

Başka olası bir sorun, ara parçanızda veya hikaye panosunda bir Gezinme Çubuğunun Clip Subviews seçeneği olabilir. Gölge (görüntü) istiyorsanız, kapalı olduğundan emin olun! Eğer imageNamed kullanırsanız arada

ClipSubviews

, dosya uzantısını eklemeyi gerekmez.

+2

Vay teşekkürler! Kontrolsüz Klip Alt Görünümleri hile yaptı. Stili süper bir sınıfa koymamın nedeni, tüm stilleri tek bir yerde tutmak istedim. – lsdevries

+0

bir çekicilik gibi çalıştı! thanx –

0

Bunu deneyin!

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-iphone.png"]]; 
+0

Teşekkürler, ama çoktan denedim. Görünüm proxy kullanmanız gerekir her tablo görünümünde kullanmaktan farklı bir sonuç var ?: [self.navigationController.navigationBar setBackgroundImage: [UIImage imageNamed: @ "navigationbarbackground.png"] forBarMetrics: UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage: [UIImage imageNamed: @ "navigationbarshadow.png"]]; – lsdevries

9

UINavigationBar için özel backgroudImage ayarlamanız gerekiyor, daha sonra shadowImage çalışabilir.

+0

Bu önemli bir bilgi! Birçoğu bunu bilmiyor gibi görünüyor .. beni yaşlandı .. – Rikco