使用此代码自定义 UINavigationBar 标题外观后,带有文本的标签被截断,如下图所示:
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeTextColor : [UIColor whiteColor],
UITextAttributeFont : [UIFont fontWithName:@"Intro" size:20.0f],
UITextAttributeTextShadowColor : [UIColor clearColor]
}];
而且,如您所见,有足够的空间。
有什么想法吗?
最佳答案
iOS 9 更新
我已经在一个干净的项目中用几十种不同大小的内置字体做了相当多的测试,我想我可以自信地说,在早期版本的 iOS 中发现的标签大小问题已经解决了已在 iOS 9(或之前)中修复。
原始问题中描述的用例似乎不可重现,标题标签现在似乎可以自行适当调整大小。因此,我认为没有必要再手动更新布局。
如果在导航栏中明显有足够的可视空间时您仍然看到截断问题,您可以尝试以下几种方法:
- 删除您可能用来解决问题的所有额外 View 。例如,如果您正在创建自己的
UILabel
并将其设置为导航栏的titleView
,您可以停止这样做,只需正常设置标题即可。 - 尽可能多地删除调整导航栏和
titleView
大小的代码。这包括在下面最初接受的答案中找到的代码。 - 如果您使用的是自定义字体(即 iOS 不包含的字体),请验证它以确保它没有损坏,并且包含 iOS 正确测量它所需的所有元数据。如果字体损坏,使用时可能无法正确显示。
原始答案
UINavigationBar 布局存在一些已知问题。尝试在 View Controller 出现和/或旋转时更新布局。
- (void)viewDidLoad
{
[super viewDidLoad];
...
[[[self navigationController] navigationBar] setNeedsLayout];
}
关于iphone - UINavigationBar 标题在使用自定义字体时被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441918/