2016-04-24 60 views
7

Dahili Fotoğraf uygulaması, bir görüntüye dokunduğunuzda içeri veya dışarı navigasyona geçer. Bu şekilde Fotoğraf uygulaması tam ekran görmesini sağlar.iOS 9'da içeri/dışarı navigasyonu nasıl açılır?

Bunu nasıl yapar (solma etkisi)?

Anladığım kadarıyla navigationController?.navigationBar.alpha artık çalışmıyor (bu yüzden bu şekilde animasyon uygulayamıyorsunuz).

+0

Ne 'UINavigationController setNavigationBarHidden hakkında: animasyonlu:' yöntem ? – rmaddy

+0

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

+0

@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) –

cevap

5

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

  • :

    Ancak, bu yaklaşım birden dezavantajları var? uygulamanızın hiyerarşisine bağlıdır (vs siz bölünmüş görünüm kullanıyorsunuz vb.). Bence genelleme yapabilirsin ya da bunu çözmek için gizli olmayan UINavigationBar'u bulmak için tüm hiyerarşiyi yürütebilirsin.

  • Ben şeffaf olması ve üzerinde alfa kanalı değiştirmek için bir Apple şuna kaşlarını olabileceğini hissi (uygulamanıza AppStore kabul edilmeyecektir)

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.

  • Ben çağrı veya GPS

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