Tüm bulgularımı paylaşıyorum.
yarım Apple uygulamasında mevcut basit bir şey uygulamak için iyi bir gün savaşmak zorunda gibi bir kukla/sinirli hissediyorum, Açıkçası
üzerine modunu şikayet et.
burada bazı bağlamdır tüm
Önce modunu kapalı şikayet et. NavigationController tarafından sağlanan navigasyonBar ile çalışıyorum (sadece görünümünüze manuel olarak düşmüş olan sadece bağımsız çubuklar)
Bulduğum birkaç yaklaşım var. Ben
1)
UIView.animateWithDuration(0.1, animations: {
navigationController?.navigationBar.alpha = 0
}, completion: nil)
@rmaddy söz burada onun için çalıştığını NavigationBar ait alfa değişikliği canlandır (Ben bunları kullanarak başarılı olmamıştır bile) hepsi belirtilecek. Ancak, ben bağımsız bir bara (navigasyonController tarafından yönetilen bir bar vs) olduğuna inanıyorum.
UI hiyerarşisini kontrol etmek için bir araç Reveal kullandım ve birkaç şey buldum. - Gizlenen bir navigationBar var (ve navigationController?.navigationBar
başvuruyor). Böylece alfaları kalbinizin sevincine dönüştürebilirsiniz, ancak bu değişiklikler görünmeyecektir.
Başka bir gezinti çubuğu vardır. Bazı özel navigationController üyelerinde başvurulan olduğunu varsayalım (özel navigasyon olarak adlandırın). Görünürdür ve görüşünüzün en üstünde görüntülenir.
2) Kullanım setNavigationBarHidden: animasyonlu:
Bu/gösteri gezinme çubuğunu gizlemek için standart bir yoludur. Animasyonlu farklı bir yol (slayt/yukarı ve aşağı). Ancak, sizin için uygunsa, sadece bununla geçin, çünkü basit ve temizdir.
navigationController?.setNavigationBarHidden(true, animated: true)
Ayrıca bunu UIView.commitAnimations başka şeylerle birlikte Canlandırmak, UIView.beginAnimations içinde sarabilirsiniz özel gezinme çubuğunun alfa değişikliği canlandır)
3 (daha yumuşak hale getirmek için).
Bu benim için çalıştı:
let privateNavigationBar = self.superview?.superview?.superview?.superview?.superview?.superview?.subviews[1]
UIView.animateWithDuration(0.1, animations: {
privateNavigationBar.alpha = 0
}, completion: nil)
I (bu görünüm için ikinci Subview olan) özel NavigationBar içeren bir görünüm elde Hiyerarşi içinde yol yukarı gidiyorum.Ben superviews içinde iman
4) NavigationBar şeffaf olun ve set arka plan görüntüsü var.
Bu fikri nerede okuduğumu bulamıyorum. Birkaç söz vardı.
Gezinme saydamlığı da dahil olmak üzere, NavigationBar'ın nasıl özelleştirileceğini gösteren Apple example app vardır.
Bu örnek uygulamanın benim için çalıştığı ilginç (gezinme çubuğu içinde saydamdır). Ancak, benim app bu kodu denediğimde işe yaramadı (Ben hala bununla ne olduğunu anlayamadım). Her zamanki gibi NavigationBar
5) ekleme bağımsız (ayrıca NavigationController da görünümü hiyerarşisinde bir şey olabilir, alt sınıfı, Info.plist içinde bir şey olabilir) değişkenlerin grup vardır
Bir çubuk sağlanan gizleyebilirsiniz
navigationController tarafından. Kendinizi UIView'e ekleyin, @IBOutlet'e bağlayın ve üzerinde alpha animasyonu kullanın (büyük olasılıkla @admaddy'nin de atıfta bulunduğu şey budur).
Kontrol ettim ve işte bu.
Bu yaklaşım this öğreticisinde kullanılır.
Her zaman böyle bir kod görünce da bu zahmete döndürme, statusbar yüksekliğinin artışı işlemez inanıyoruz:
Ancak bir dezavantajı vardır (makalede yazılmıştır) Yeniden boyutlandırma ile ilgili sorunların olacağını biliyorum: CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 64.0)
Potansiyel olarak kısıtlamalarla değiştirebilirsiniz. Bu rotaya gittim, ancak bazı sorunlara rastladım.
6) Diğer yöntemler
Ben iki tane daha yöntemleri gördük. Onların çalışacak mı bilmiyorum veya olumsuz yanları nasıl olacak: Bu sorunun tanesi
Bir: How to hide/show status bar and navigation bar by fading in/out at the same time like the Photos app in iOS 7?
Ve bu cevap: https://stackoverflow.com/a/18063898/422080
Ne 'UINavigationController setNavigationBarHidden hakkında: animasyonlu:' yöntem ? – rmaddy
BTW - "navigationBar" öğesinin "alpha" özelliğini canlandıran bir uygulama var ve iyi çalışıyor. Neden söylediğine emin değilim artık işe yaramıyor. Dene. – rmaddy
@rmaddy Gezinme çubuğunu gösterir ve gizler. Ancak, farklı animasyon kullanır. Yukarı ve aşağı kaydırarak (içeri ve dışarı silerek vs) –