我知道如何设置颜色并更改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);
答案 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)
答案 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文本样式的值也将更改,并且标题将具有正确的样式。