2014-10-24 16 views
5
Aşağıdaki kod iOS 8.1 ile kalmak Xcode 6.1 güncellemeden önce cezayı koşuyordu

:Son Xcode Sürüm Swift Navigasyon Bar Yazı Ayarlanamıyor

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.topItem?.title = "Home" 
    self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34), NSForegroundColorAttributeName: UIColor.whiteColor()] 
} 

konu NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)

içinde özellikle ve burada alıyorum hatadır:

! "Could not find an overload for 'init' that accepts the supplied arguments"

farklı bir StackOverflow ques bu orijinal kodu bulundu ve bu güncellemeye kadar beklendiği gibi çalışıyordu (dün indirildi). Yazı tipim gerçekten doğru şekilde yüklendi.

Bu kodu şimdi farklı yazmalı mıyım, yoksa Navigasyon Çubuğu Yazı Tipi'ni ayarladığım yepyeni bir yol var mı?

Teşekkürler!

cevap

20

Whoops. Bunu kendi başıma çözdüm:

NSFontAttributeName bildirimini izleyen bir "NSString!" Türü gerektirdiğinden bir ünlem işaretine ihtiyacım vardı. Belki de daha önce sadece bir "NSString" gerekiyordu, ama şimdi hiçbir sorunum yok.

Çalışma hattı:

NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 24)! 

tam kod Çalışma:

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.topItem?.title = "Home" 
    self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 
} 

şimdi saçma bir soru gibi görünüyor. Umarım bu bir başkasına yardım eder! o isteğe bağlı değil AnyObject gerektirir gibi

failable intializer

init?(name fontName: String, size fontSize: CGFloat) -> UIFont

olarak tanımlanır gibi UIFont(name: intializer kullanıyorsunuz

1

optional.You ambalajından gerek o dönüyor link.So daha okuyun.

self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 
1

Teşekkürler Benji !!!

Biraz değiştirdim ve gezinme denetleyicisinin görünüm niteliğine uyguladım. Yazı tipi zaten yeni yazı yüklemiş olduğu, tespit ve ne zaman kullanıldığını, bu Doing

if let font = UIFont (name: "AdobeArabic-BoldItalic", size: 20) { 
      UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: font] 
     } 

emin yapar:

var navigationBarAppearance = UINavigationBar.appearance() 

    navigationBarAppearance.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "OpenSans", size: 16)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 
1

yolu gibi, yazı tipi olarak koşullu ilan etmek daha iyidir Şartlı olmadan, bir isteğe bağlı, bir istisna yayınladı.

0
override func viewWillLayoutSubviews() { 

    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName : UIFont(name: "Roboto-Regular", size: 14)!] 
}