2016-11-22 51 views
13

Diğer cevaplara baktığım ve hepsinin eski olduğunu ve tam olarak yanıt vermediğinden bunun yinelenmediğinden eminim.Gezinme Çubuğu Swift 3'ün yüksekliğini nasıl değiştirebilirim?

Gezinme Denetleyicisine ve çeşitli denetleyicilere sahibim. Gezinme Çubuğunu biraz daha uzun yapmak istiyorum, bu yüzden ihtiyacım olan metin boyutuna sığar. Bunu nasıl yapabilirim ?

bu çalıştı. UINavigationBar.appearance() çerçeve = CGRect (x: 0.0, y: 0.0, genişlik: 320.0, yükseklik: 210.0), fakat hiçbir şey olmaz ... Ayrıca

, ben değildi Xcode düzen düğmelerini kullanarak Nav Bar'a herhangi bir kısıtlama ekleyemez.

Birisi bu sorunu düzeltmeme yardımcı olabilir. Şimdiden teşekkürler! Alternatif içinde

self.navigationController?.navigationBar.addSubview(yourNavBarView) 

: o zaman

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    let height: CGFloat = 50 //whatever height you want to add to the existing height 
    let bounds = self.navigationController!.navigationBar.bounds 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height) 

} 
+0

http://stackoverflow.com/questions/40316352/increase-navigationbar-height/40320225#40320225 – Joe

cevap

21

biri bunu yapmak için bir yoldur Koddan UIView oluşturmak istiyorsanız,

let viewNavBar = UIView(frame: CGRect(
    origin: CGPoint(x: 0, y:0), 
    size: CGSize(width: self.view.frame.size.width, height: 100))) 

ve ardından nav çubuğuna ekleniyor.

+0

Büyük sayesinde gayet güzel çalıştı. Şaşırtıcı bir şekilde bu kodu bir VC'ye ekledim ve tüm uygulama için çalıştı ... Kodunuzu biraz değiştirmeye ve App Delegate'a girmeye çalıştım ama maalesef işe yaramadı. Ama sanırım sorun değil. – KirillC

+2

@KirillC UINavigationController'ı alt sınıflara ayırabilir ve orada Frankie'nin kodunu ekleyebilirsiniz. –

+0

@KirillC Rica ederim. Lütfen yardım ederse cevabı kabul etmeyi düşünün. Brett'in dediği gibi yapabilirsin. Ayrıca sadece bir VC'de çalışmak için ihtiyacınız varsa, yüksekliği değiştirmek için viewWillDisappear'a benzer bir yöntem ekleyebilirsiniz. – Frankie

-1

Eğer (Boyu ile) xib adresinin gezinti çubuğu çizebilir ve: İşte enter image description here

+0

Bunun gibi 'init' demeye gerek yok. - Burada büyük bir kusur, OP'nin istediği bir UINavigasyonBar değil, bir vanilya UIView yarattığınızdır. – matt

7

Bu

class TTNavigationBar: UINavigationBar { 

    override func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.main.bounds.width, height: 55) 
    } 

} 

gibi UINavigationBar dayalı bir sınıf oluşturmak Ve NavigationController ekleyebilirsiniz.

+0

Bu yöntemin benim durumumda neden hiç çağrılmadığı hakkında bir fikrin var mı? Temel olarak bu kodu özel UINavigationBar sınıfıma kopyaladım ve gezinme çubuklarımdaki storyboard'a yerleştirdim. – andrejbroncek

+0

@andrejbroncek Özel UINavigationBar uygulamasının çalıştığından emin misiniz? -Bir sık ​​karşılaşılan sorun, bazen birkaç UINavigationController ile sonuçlanır ve belki de özel UINavigationBar hiçbir zaman yürütülmez veya görüntülenen değil –

5

Sen UINavigationController

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    let height = CGFloat(72) 
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height) 
} 
1

uygulamanızda navigasyon çubukları hepsi aynı düzeltilmiş yüksekliğe varsa, bu daha iyi olabilir uzanır sınıfta bu kodu yazabilirsiniz. Cevabınız için

extension UINavigationBar { 
    open override func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.screenBounds.width, height: 51) 
    } 
} 
+0

@Hemang Sadece kodu projenize ekleyin. – HMHero