iOS 11中UINavigationBar Large Title的默认字体?

时间:2017-11-09 22:45:46

标签: ios fonts ios11 large-title

我知道如何设置颜色并更改iOS 11中大标题的字体,但我很难找到大标题的默认字体和字体大小。我想在应用程序的其他地方重现该字体。我尝试了以下但是它们没有给出字体或字体大小的结果。不确定我应该在哪里寻找这个。

NSLog(@"self.navigationController.navigationBar.largeTitleTextAttributes:%@",self.navigationController.navigationBar.largeTitleTextAttributes);

NSDictionary *dict = self.navigationController.navigationBar.largeTitleTextAttributes;
UIFont *font = [dict objectForKey:@"NSFontAttributeName"];
NSLog(@"font is.. %@, %@, %@",font,font.fontName,font.fontDescriptor);

8 个答案:

答案 0 :(得分:12)

获取大标题字体的正确解决方法如下:

目标-C:

UIFont *font = [UIFont preferredFontForTextStyle: UIFontTextStyleLargeTitle];
NSLog("%@", font);

夫特:

let font = UIFont.preferredFont(forTextStyle: .largeTitle)
print(font)

即使用户在“设置”应用中应用了各种辅助功能和字体大小更改,也会显示正确的值。

以上将默认打印出以下内容(在游乐场中):

  

< UICTFont:0x7fa865c05390> font-family:" .SFUIDisplay&#34 ;; font-weight:normal; font-style:normal; font-size:34.00pt

请注意,必须仅在iOS 11中调用上述代码中.largeTitle的使用。如果您的应用支持iOS 10或更早版本,则必须正确使用@available来包装该代码。

答案 1 :(得分:2)

修改 我打开了用户界面检查器,它说:

enter image description here

无需在此处编码:)

答案 2 :(得分:1)

iOS12大标题 System Bold 34(旧金山)

onViewCreated()

iOS9-iOS12 System Semibold 17(旧金山)

[UIFont boldSystemFontOfSize:34]

iOS8 系统Semibold 17(Helvetica Neue)

[UIFont systemFontOfSize:17 weight:UIFontWeightSemibold]

iOS7 系统大胆17(Helvetica Neue)

[UIFont systemFontOfSize:17 weight:UIFontWeightSemibold]

答案 3 :(得分:1)

尝试这样的事情:

if #available(iOS 11.0, *) { navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.white, .font: UIFont(name: "HelveticaNeue-Bold", size: 20)!] }

答案 4 :(得分:0)

我实际上通过尝试不同的字体和大小来找到答案。现在,免责声明,这可能会随着可访问性/动态字体大小而改变。但我发现的字体和大小是

a {
   color: black;
   font-family: 'Quicksand', sans-serif;
   text-decoration: none;
   padding: 5px 10px;
  }

我仍然希望找到一种以编程方式获取此功能的方法,并等待接受答案,希望有人可能知道该怎么做。与此同时,希望这对某人有所帮助。

答案 5 :(得分:0)

我敢肯定至少iOS 11以上是

迅速5:

UIFont.init(name: ".SFUIDisplay-Bold", size: 32)

答案 6 :(得分:0)

在iOS 13上,这是导航栏中用于大标题的确切字体。我逐个像素地比较了屏幕截图,它完全匹配!

UIFont.systemFont(ofSize: 34, weight: .bold)

答案 7 :(得分:0)

最简单的方法是使用

UIFont.preferredFont(forTextStyle: .largeTitle)

请记住,这不是不是 UINavigationBar的大标题,它是一种在您自己的视图中使用的样式,这就是减轻重量的原因。但是您可以对其施加预期的重量。

UIFont(descriptor: normalTitleFont.fontDescriptor.withSymbolicTraits(.traitBold)!, size: normalTitleFont.pointSize)

完整代码:

let normalTitleFont = UIFont.preferredFont(forTextStyle: .largeTitle)
let largeTitleFont = UIFont(descriptor: normalTitleFont.fontDescriptor.withSymbolicTraits(.traitBold)!, size: normalTitleFont.pointSize)

与硬编码大小或字体相比,这种方法更好。

用户可以更改设备上的辅助功能设置,并且硬编码值将关闭。

.largeTitle文本样式的值也将更改,并且标题将具有正确的样式。