有没有办法找到 UINavigationBar 标题的字体和框架大小?
Posted
技术标签:
【中文标题】有没有办法找到 UINavigationBar 标题的字体和框架大小?【英文标题】:Is there any way of finding the font & frame size of the UINavigationBar title? 【发布时间】:2011-05-17 11:49:06 【问题描述】:是否有任何方式以编程方式返回导航控制器标题栏的字体和大小(例如 self.title.frame.size
或 self.title.font
,尽管我不知道这些都有效)?
(如果您想知道原因,我想在截断标题之前使用 NSString sizeWithFont
方法来计算标题中可以容纳多少文本。我可以通过物理测量来做到这一点我自己的字体和框架大小(例如,我认为它是 Helvetica 15),但我希望实际标题报告它自己的字体和大小,以使我的应用程序适应未来。)
【问题讨论】:
【参考方案1】:从 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";
...显示 20 像素的粗体默认系统字体。您也可以根据需要更改这些设置。
【讨论】:
【参考方案2】:我已经弄清楚了如何获得框架:
self.navigationItem.titleView.frame.size
只留下字体。我的研究表明它是 20 号的系统字体,但我希望它能够自我报告。
编辑——这很奇怪。如果我这样做......
self.title = @"test";
NSLog(@"Width is: %f", self.navigationItem.titleView.frame.size.width);
...我从 NSLog 中得到随机的负数。所以看起来标题框架不正确。
【讨论】:
仅供参考:字体是系统字体,要么是 Helvetica 或 Helvetica-Neue(Apple 在 iOS 4 到来时切换了系统字体沿)。 titleView 是一个 UIView,它有一个字体属性。 @Lou 如果我尝试self.navigationItem.titleView.font
,我会得到在“UIView”类型的对象上找不到属性“字体”。
抱歉,我以为它会是一个 UILabel -- UINavBarPrompt 没有公开字体 -- 看起来它是硬编码到实现中的。 @lxt 说它是系统字体——你可以查一下。
@Lou 谢谢 - 我将不得不对其进行硬编码。我只是希望我能让它返回自己的字体,以防苹果将来做出改变。以上是关于有没有办法找到 UINavigationBar 标题的字体和框架大小?的主要内容,如果未能解决你的问题,请参考以下文章
eclipse中的maven项目因jar包没有引用标红解决办法
iOS 7:禁用整个应用程序的 UINavigationBar 半透明