iphone - UINavigationBar 标题在使用自定义字体时被截断

标签 iphone ios ipad uinavigationbar

使用此代码自定义 UINavigationBar 标题外观后,带有文本的标签被截断,如下图所示:

[[UINavigationBar appearance] setTitleTextAttributes:@{
                            UITextAttributeTextColor : [UIColor whiteColor],
                            UITextAttributeFont : [UIFont fontWithName:@"Intro" size:20.0f],
                            UITextAttributeTextShadowColor : [UIColor clearColor]
                            }];

enter image description here

而且,如您所见,有足够的空间。

有什么想法吗?

最佳答案

iOS 9 更新

我已经在一个干净的项目中用几十种不同大小的内置字体做了相当多的测试,我想我可以自信地说,在早期版本的 iOS 中发现的标签大小问题已经解决了已在 iOS 9(或之前)中修复。

原始问题中描述的用例似乎不可重现,标题标签现在似乎可以自行适当调整大小。因此,我认为没有必要再手动更新布局。

如果在导航栏中明显有足够的可视空间时您仍然看到截断问题,您可以尝试以下几种方法:

  1. 删除您可能用来解决问题的所有额外 View 。例如,如果您正在创建自己的 UILabel 并将其设置为导航栏的 titleView,您可以停止这样做,只需正常设置标题即可。
  2. 尽可能多地删除调整导航栏和 titleView 大小的代码。这包括在下面最初接受的答案中找到的代码。
  3. 如果您使用的是自定义字体(即 iOS 不包含的字体),请验证它以确保它没有损坏,并且包含 iOS 正确测量它所需的所有元数据。如果字体损坏,使用时可能无法正确显示。

原始答案

UINavigationBar 布局存在一些已知问题。尝试在 View Controller 出现和/或旋转时更新布局。

- (void)viewDidLoad
{
    [super viewDidLoad];
    ...
    [[[self navigationController] navigationBar] setNeedsLayout];
}

关于iphone - UINavigationBar 标题在使用自定义字体时被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441918/

相关文章:

iphone - 将核心数据信息导出到 Excel 工作表

iphone - iAd 横向奇怪的 View 行为

iphone - 如何刷新 iPhone 中的 NSLocale?

ios - CoreData 和中间体

ipad - 为什么应用 '-webkit-backface-visibility: hidden;' 可以修复 ios/ipad 5.1 上的负边距过渡问题?

iphone - iPhone 中可以添加多少条记录?

iphone - 我如何在 AQGridViewCell 中实现删除按钮

ios - 从 iOS8 上的 CameraRoll 加载图像读取 EXIF 方向标签

ios - NSDate 在模拟器和设备(ipad)中不同

ios - 方向更改时以编程方式更改 UISearchBar 的框架