【问题标题】:Cut-off title label in UINavigationBar in iOS 5iOS 5 中 UINavigationBar 中的截止标题标签
【发布时间】:2011-10-19 21:15:16
【问题描述】:

使用 iOS 5 SDK 我正在编写一个应用程序,该应用程序在其 UINavigationBar 实例中使用自定义的脚本样式字体。这种字体的问题在于,由于它是脚本样式,它的字形超出了界限。您可以在这里查看应用内的问题:

如需更清晰的示例,您可以在此处查看我的 Photoshop 文档:

知道如何解决这个问题吗?我的第一直觉是在 UINavigationBar 中设置 UILabel 的 clipsToBounds 属性,但显然没有苹果认可的直接访问该对象的方法。在我使用 iOS 5 测试版时,这一直困扰着我一段时间,所以现在 NDA 已经解除,也许你可以提供帮助。

谢谢!

【问题讨论】:

  • 你发现了吗?我有完全相同的问题。
  • 好吧,我向 Apple 提交了一张票,但过了一段时间,由于某种技术原因,他们返回“UILabel 无法真正按照您的要求进行操作”。我还没有真正找到解决方法,并决定更改这个项目的设计,因为其他原因使这个问题变得无关紧要。对不起!
  • 没问题。感谢更新。如果我找到可靠的解决方法,我会发布答案。大多数时候它对我来说并没有太糟糕,所以我目前没有投入太多时间。

标签: iphone objective-c ios uikit ios5


【解决方案1】:

您可以使用UINavigationItemtitleView 设置具有自定义字体的UILabel,然后覆盖setTitle: 以更新您的自定义标签。如有必要,您可以在标签上调用sizeToFit 或在使用sizeWithFont: 或任何其他NSString 大小调整方法后手动更新其框架。

【讨论】:

    【解决方案2】:

    你能访问UILabel的clipToBounds或adjustsFontSizeToFitWidth属性吗?

    或者,您可以选择使标签在 UILabel 视图中变宽的字体大小。此处提供了有关如何将字体大小调整为给定矩形的说明:

    How to adjust font size of label to fit the rectangle?

    【讨论】:

      【解决方案3】:

      如果您使用的是导航控制器,您可以设置正在显示的某个 UIViewController 的 titleView。这个标题视图可以是 UIImageView 标题为 .png 资源。

      例如:

      在你的 UIViewController 中

      - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
      {
          self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
          if (self) {
                  self.navigationController.navigationItem.titleView = [[UIImageView alloc] initWithImage:@"yourheader.png"];
          }
      
          return self;
      }
      

      您可以稍微调整一下图像的大小以使其适合。

      希望这能有所帮助。

      【讨论】:

      • 我知道这一点,但在我的应用程序中,每个新视图控制器的标题都需要更改,包括根据用户输入动态更改,因此这样的静态解决方案行不通。
      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      相关资源
      最近更新 更多