2013-08-13 50 views
14

Hikaye panosunda, bir görüntü denetleyicisinde, durum çubuğunun altında bir gezinme çubuğu eklemeyi denedim, çalıştıran, şeffaf ve gezinti çubuğu gibi, bulanık olması gereken bir etiket gösterir. Navigasyon görünümü denetleyicisi gömülü aynı görünüm denetleyicisi verirkeniOS 7 durum çubuğu saydam

enter image description here

Ama altından arka plan görüntüsü Niyetim olan bulanık olabilir.

enter image description here

bu iki yolu farklı sonuçlar nelerdir? Durum çubuğu bulanıklaştırma yapmak için köknar yöntemi için ne yapmalı?

Teşekkürler!

+1

http://meta.stackexchange.com/questions/94465/should-moderators-enforce-ndas-for-software-vendors –

+2

@Caleb bkz @Caleb Meta üzerinde bu cevapta bulunabilir: http://meta.stackexchange.com/questions/184625/why-is-there-an-ios-7-tag/184635#184635 –

+0

@BradLarson Belki de cevap vermek için biraz zaman ayırmalıyım meta parçanıza burada yapmak yerine. Kısaca, iOS NDA'yı ihlal eden soruların kapatıldığı bir geçmişimiz var ve bence en azından * bu tür soruları bir yorumla belirtmek önemlidir. Konumunuzun tüm SO moderatörlerinin veya genel olarak SE'nin pozisyonu olduğunu söylüyorsanız, bu temelde kapatmaya oy vermemeye dikkat etmiyorum. OTOH, cevap verilemeyen sorulara cevap verilemeyecek açık bir değer var. – Caleb

cevap

4

iOS 7'de, durum çubuğu varsayılan olarak saydamdır. Gezinme çubuğu tarafından gerçekte bir gezinme çubuğu olduğunda da gördüğünüz bulanıklaştırma. Bu nedenle, gezinme çubuğu olmadan aradığınız efekti oluşturmak için, durum çubuğunun altında bulanıklaştırma efekti oluşturan bir görünümü konumlandırmanız gerekir.

Referans olarak, tarafından sağlanan bir çerçeve ile görünümünüzü ekleyin:

CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; 
+0

Merhaba, ipucu için teşekkürler. ama seninkilerle nasıl devam edeceğimi bilemiyorum. Daha fazlasını söyleyebilir misin? – S1U

+0

Yardımcı olması durumunda yeniden ifade etmeme izin verin: iOS'ta durum çubuğu şeffaftır ve denetleyicileri varsayılan olarak tam ekrana getirir. Yani bu büyük değişim, benim için alıştırmam biraz zaman aldı (ve umarım burada yanılmadım, birkaç hafta boyunca sadece iOS 7 ile çalışıyorum). Bu nedenle, istediğiniz çubukta durum çubuğunun altında bir görünüm koymanız yeterlidir.Navigasyon kontrol çubuğu bunu sizin için yapar, bir nav çubuğunuz olmadığında bunu kendiniz yapmanız gerekir. Bu daha net mi? –

+0

Ardından, bir çerçeve oluşturduktan sonra durum çubuğu nasıl saydam hale getirilir? –

2

Ben tamamen bu test, ama henüz sizin plist dosyasına gidin ve aşağıdaki ayarları kontrol:

"Görünüm denetleyicisi tabanlı durum çubuğu görünümü ": Eğer bu" Evet "olarak ayarlanırsa, ihtiyacınız olan her şey için her View Controller'a özgü bir durum çubuğu göstermelidir.

"Durum çubuğu stili": Bunu üç farklı stile ayarlayabilirsiniz: Opak siyah, Gri ve Saydam siyah.

Eğer bu sizin için işe yararsa bana bildirin.

1

UINavigationController, UINavigationBar'ın yüksekliğini, oldukça tuhaf ve belgesiz kısıtlamalara bağlı olarak 44 veya 64 noktaya değiştirir. UINavigationController, görünümünün çerçevesinin en üst kısmının UIWindow’un tepesiyle görsel olarak bitişik olduğunu algılarsa, gezinme çubuğunu 64 nokta yüksekliğiyle çeker. Görünümünün üst kısmı, UIWindow’un tepesine bitişik değilse (yalnızca bir noktadan bile olsa), navigasyon çubuğunu "geleneksel" şekilde 44 puanlık bir yükseklikte çeker. Bu mantık UINavigationController tarafından, uygulamanızın görünüm denetleyici hiyerarşisinde birkaç çocuk olsa bile gerçekleştirilir. Bu davranışı engellemenin hiçbir yolu yoktur.

Görünüm hiyerarşinizi ilk örnekteki noktadan başlayarak konumlandırıyor gibi görünüyor (0,20). Ayrıca, bir UIToolbar veya bir UINavigationBar mı? Eğer ikincisiyse, neden kendi başına kullanıyorsunuz ve UINavigationController'ın içinde kullanmıyorsunuz?

UINavigationController'ı kullanmıyor ve bunun yerine özel görünüm denetleyicisi kapsayıcılarını kullanıyorsanız, görünümlerinizi buna göre konumlandırmanız gerekir. Ayrıntılı bir açıklama için this answer numaralı telefona bakın.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if (NSFoundationVersionNumber>NSFoundationVersionNumber_iOS_6_1) { 
    CGRect statusBarFrame = [self.view convertRect: [UIApplication sharedApplication].statusBarFrame fromView: nil]; 
    UIToolbar *statusBarBackground = [[UIToolbar alloc] initWithFrame: statusBarFrame]; 
    statusBarBackground.barStyle = self.navBar.barStyle; 
    statusBarBackground.translucent = self.navBar.translucent; 
    statusBarBackground.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth; 
    [self.view addSubview: statusBarBackground]; 
    } 
} 

gezinti çubuğuna self.navBar puan Film şeridinde eklendi:

1

Ben benzer UI tasarımı ve Matt Hall answer ve ben google'dan some article dayanarak, böyle bir şey ile gelip var. Bu, yalnızca iOS7'de çalıştırıldığında bu koşulu eklediğim (uygulamaum iOS5'i desteklemesi gerektiği) durumunda gereklidir.

Bu bir çekicilik gibi çalışır. (Durum çubuğu boyutu zorlamak)


alternatif bir yaklaşım da iyidir: buldum

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if (NSFoundationVersionNumber>NSFoundationVersionNumber_iOS_6_1) { 
    CGRect statusBarFrame = [self.view convertRect: [UIApplication sharedApplication].statusBarFrame fromView: nil]; 
    self.navBar.frame = CGRectUnion(statusBarFrame, self.navBar.frame); 
    } 
} 


Ben dahil beri bu sadece storyboarda iyi olduğunu düşünüyorum başka çözüm ve hiçbir koddur gereklidir.

  1. Anahtarı film şeridi görünümü modu (aynı görünümü: iOS 6.1 ve önceki) 6,1-change view mode
  2. seçin sorunlu UINavigationBar boyutu bölümünde
  3. "iOS6/7 Deltaları" correct size of navigation bar
  4. Anahtarı içinde 20 delta yüksekliğini eklemek 7.0 moduna geri git (iOS 7.0 ve üstü) ve sonuçtan memnun ol.
3

Ben size bastırıyorlar tüm görünüm denetleyiciye gezinti çubuğu göreceksiniz zaman navigasyon görünümü kontrolörü ile görünüm denetleyicisi gömmek zaman self.navigationController.navigationBar.clipToBounds = NO

0

ayarlayarak bu çözüldü, bu sadece başvuru için eski olduğunu biliyorum aynı görüntü denetleyiciden İlk durumda, kontrol panosundan görünüm denetleyicisini seçebileceğinizi belirten gezinti çubuğu nesnesini ekliyorsunuz, seçtikleri denetleyici sekmesine gitmek için & seçtikleri en iyi çubuğundan yarı saydam gezinme çubuğu. Ayrıca NDA ve yığın taşması ilgili düşüncelerim can - enter image description here

İlgili konular