使用此代码自定义UINavigationBar标题外观后,带有文本的标签会被截断,如下图所示:
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeTextColor : [UIColor whiteColor],
UITextAttributeFont : [UIFont fontWithName:@"Intro" size:20.0f],
UITextAttributeTextShadowColor : [UIColor clearColor]
}];
而且,正如您所看到的,还有足够的空间。
有什么想法吗?
答案 0 :(得分:7)
我已经在一个干净的项目中进行了一些测试,其中包含几十种不同大小的内置字体,我想我可以肯定地说明在早期版本的iOS中发现的标签大小调整问题在iOS 9中(或之前)修复。
原始问题中描述的用例似乎不具有可再现性,标题标签现在似乎可以自行调整大小。因此,我认为不再需要手动更新布局。
如果导航栏中有足够的可视空间,您仍然会看到截断问题,那么您可以尝试以下几种方法:
UILabel
并将其设置为导航栏的titleView
,则可以停止这样做,只需正常设置标题。titleView
的大小。这包括在下面最初接受的答案中找到的代码。原始答案
UINavigationBar布局存在一些已知问题。尝试在视图控制器出现时和/或旋转时更新布局。
- (void)viewDidLoad
{
[super viewDidLoad];
...
[[[self navigationController] navigationBar] setNeedsLayout];
}
答案 1 :(得分:1)
您可以尝试使用清晰的背景颜色制作UILabel
以及所需的文字设置。然后,您可以将此标签设置为titleView
UINavigationBar
属性
答案 2 :(得分:0)
如果我首先将标题初始化为空字符串,然后尝试更新它,我遇到了同样的问题。调用setNeedsLayout没有修复。将空标题初始化为20个空格字符为我解决了这个问题。
答案 3 :(得分:0)
设置标签通话后
label.sizeToFit()