Ios 更改导航栏标题字体-swift
我的导航栏中有一个标题,我想将其更改为自定义字体。我已经找到了这行代码,但它是为当你有一个导航控制器Ios 更改导航栏标题字体-swift,ios,swift,navigationbar,Ios,Swift,Navigationbar,我的导航栏中有一个标题,我想将其更改为自定义字体。我已经找到了这行代码,但它是为当你有一个导航控制器 self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "LeagueGothic-Regular", size: 16.0)!,
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "LeagueGothic-Regular", size: 16.0)!,
NSForegroundColorAttributeName: UIColor.whiteColor()]
但我没有任何导航控制器。我将导航栏手动添加到我的视图中
如何更改注释字体?尝试以下操作:
目标-C
[[UINavigationBar appearance] setTitleTextAttributes:attrsDictionary];
Swift 3
self.navigationController.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "CaviarDreams", size: 20)!]
Swift 4
self.navigationController.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: UIFont(name: "CaviarDreams", size: 20)!]
如何在Swift中为每个视图控制器设置字体的正确方法(使用外观代理): Swift 5(和4.2) 斯威夫特4 斯威夫特3
要在对导航栏的引用上调用titleTextAttributes,请使用:
let attributes = [NSAttributedStringKey.font: UIFont(name: "Helvetica", size: 17)!]
self.navigationController?.navigationBar.titleTextAttributes = attributes
SWIFT 4.x
let navigation = UINavigationBar.appearance()
let navigationFont = UIFont(name: "Custom_Font_Name", size: 20)
let navigationLargeFont = UIFont(name: "Custom_Font_Name", size: 34) //34 is Large Title size by default
navigation.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: navigationFont!]
if #available(iOS 11, *){
navigation.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: navigationLargeFont!]
}
在iOS 11.x上更改普通和大标题的导航栏标题字体
let navigation = UINavigationBar.appearance()
let navigationFont = UIFont(name: "Custom_Font_Name", size: 20)
let navigationLargeFont = UIFont(name: "Custom_Font_Name", size: 34) //34 is Large Title size by default
navigation.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: navigationFont!]
if #available(iOS 11, *){
navigation.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: navigationLargeFont!]
}
大标题必须在导航栏中设置为真。您也可以在故事板中这样做,Xcode 10.1中有一个错误,这也是克服这个问题的一个技巧
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: UIFont(name: "Lato-Semibold", size: 17)!,NSAttributedStringKey.foregroundColor : UIColor.white]
步骤1-从字体中选择系统
第2步-然后再次选择“自定义”,它将显示所有字体。
import UIKit
class NavigationController: UINavigationController
{
// MARK: Navigation Controller Life Cycle
override func viewDidLoad()
{
super.viewDidLoad()
setFont()
}
// MARK: Methods
func setFont()
{
// set font for title
self.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 20)!]
// set font for navigation bar buttons
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 15)!], for: UIControl.State.normal)
}
}
Swift 4.2 Xcode 10
self.navigationController!.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: UIFont(name: "Sacramento-Regular", size: 19)!]
捷径5捷径
//Programatically
self.navigationController!.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Helvetica Neue", size: 40)!]
身体上
Swift 5
我将向您展示我们如何在公司项目中做到这一点。
import UIKit
class NavigationController: UINavigationController
{
// MARK: Navigation Controller Life Cycle
override func viewDidLoad()
{
super.viewDidLoad()
setFont()
}
// MARK: Methods
func setFont()
{
// set font for title
self.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 20)!]
// set font for navigation bar buttons
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 15)!], for: UIControl.State.normal)
}
}
UINavigationController
子类viewDidLoad
中编写自定义代码UINavigationController
子类的外观。
import UIKit
class NavigationController: UINavigationController
{
// MARK: Navigation Controller Life Cycle
override func viewDidLoad()
{
super.viewDidLoad()
setFont()
}
// MARK: Methods
func setFont()
{
// set font for title
self.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 20)!]
// set font for navigation bar buttons
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 15)!], for: UIControl.State.normal)
}
}
从工作项目复制粘贴。
import UIKit
class NavigationController: UINavigationController
{
// MARK: Navigation Controller Life Cycle
override func viewDidLoad()
{
super.viewDidLoad()
setFont()
}
// MARK: Methods
func setFont()
{
// set font for title
self.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 20)!]
// set font for navigation bar buttons
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Al-Jazeera-Arabic", size: 15)!], for: UIControl.State.normal)
}
}
斯威夫特5
在导航栏的参考上调用
titleTextAttributes
。为了澄清这个答案,fontname
应该是UIFont
类型,而不仅仅是字符串形式的字体名称。是的,例如让font=UIFont(名称:“Lato Light.ttf”,大小:34)@Davidwilliamesactly:)虽然它是“Lato Light”而不是“Lato Light.tff”:但请注意,这个答案会影响所有导航条,而不仅仅是这个特定导航条。我得到了这个错误。无法将“UIFont”类型的值分配给类型[字符串:任意]?虽然这个代码片段可以解决这个问题,但它确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!即使在Xcode 10.2.1
中,这种变通方法也有效(或必需)。谢谢,它在界面生成器中生效,但在模拟器中运行时导航栏不会显示字体更改。对于iOS 13及以上版本,请使用UINavigationBarAppearance()
,请参阅