【问题标题】:Is there any way of finding the font & frame size of the UINavigationBar title?有没有办法找到 UINavigationBar 标题的字体和框架大小?
【发布时间】:2011-05-17 11:49:06
【问题描述】:

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

(如果您想知道原因,我想在截断标题之前使用 NSString sizeWithFont 方法来计算标题中可以容纳多少文本。我可以通过物理测量来做到这一点我自己的字体和框架大小(例如,我认为它是 Helvetica 15),但我希望实际标题报告它自己的字体和大小,以使我的应用程序适应未来。)

【问题讨论】:

    标签: iphone cocoa-touch ios uinavigationcontroller


    【解决方案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 谢谢 - 我将不得不对其进行硬编码。我只是希望我能让它返回自己的字体,以防苹果将来做出改变。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2020-02-22
      相关资源
      最近更新 更多