有什么方法可以找到字体& UINavigationBar标题的帧大小?

时间:2011-05-17 11:49:06

标签: iphone cocoa-touch ios uinavigationcontroller

有没有办法以编程方式返回导航控制器标题栏的字体和大小(例如self.title.frame.sizeself.title.font,虽然我不知道这些是否有效?)

(如果您想知道原因,我想使用NSString sizeWithFont方法在我截断之前确定标题中可以容纳多少文本。我可以通过我自己实际测量字体和帧大小(例如我认为它是Helvetica 15),但我希望实际的标题报告自己的字体和大小,以使我的应用程序面向未来。)

2 个答案:

答案 0 :(得分:3)

从iOS 5.0开始,UINavigationBar有一个名为titleTextAttributes的属性。这是一个包含NSString UIKit Additions Reference描述的属性的字典。

如果我在我的一个项目中打印出这本词典,我会得到以下内容:

Font = "<UICFFont: 0x998e690> font-family: \".Helvetica NeueUI\"; font-weight: bold; font-style: normal; font-size: 20px";
TextColor = "UIDeviceWhiteColorSpace 0.2 1";
TextShadowColor = "UIDeviceWhiteColorSpace 0 0";
TextShadowOffset = "UIOffset: {0, 0}";

...显示20px的粗体默认系统字体。您也可以根据需要更改这些内容。

答案 1 :(得分:1)

我已经弄清楚如何获得框架:

self.navigationItem.titleView.frame.size

只留下字体。我的研究表明它是20号的系统字体,但我喜欢它是自我报告。

编辑 - 这很奇怪。如果我这样做......

 self.title = @"test";
 NSLog(@"Width is: %f", self.navigationItem.titleView.frame.size.width);

...我从NSLog获得随机负数。所以看起来标题框架不对。