我想检查 UINavigationItem
的标题是否被截断。
我这样设置标题:self.navigationItem.title = whatever
。
我知道我可以检查 UILabel
中的文本是否像这样被截断:
CGSize size = [label.text sizeWithFont:[UIFont fontWithName:@"myfont" size:18.0]];
if (size.width > label.bounds.size.width) {
// set a shorter title
}
我什至可以找到显示标题的 UINavigationItemView
对象,如下所示:
UIView *navItemView;
for (UIView *view in self.navigationController.navigationBar.subviews) {
if ([view isKindOfClass:NSClassFromString(@"UINavigationItemView")]) {
navItemView = view;
}
}
但我不能将此方法应用于 navItemView
,因为它的宽度似乎总是恰好为 58,这比其中的标题小得多,所以根据它,看起来标题被截断,即使它没有被截断。
所以,我的问题归结为:如何找到 UINavigationItem
中显示的标题的宽度?
更新:我已经找到了我的问题的解决方案,但它并不十分理想、完美或可靠,因此我不会将其标记为答案然而。如果有人有更好的解决方案,请分享。
最佳答案
我想尝试的是,将 UINavigationItemView
转换为 UILabel
,使用 .text
属性获取它的文本并获取CGSize
字符串的 -sizeWithFont:constrainedToSize:
UILabel *navItemView;
for (UIView *view in self.navigationController.navigationBar.subviews) {
if ([view isKindOfClass:NSClassFromString(@"UINavigationItemView")]) {
navItemView = (UILabel*)view;
CGSize theSize = [navItemView.text sizeWithFont:[UIFont systemFontOfSize:navItemView.font.systemFontSize] constrainedToSize:260 lineBreakMode:UILineBreakModeWordWrap];
}
}
现在您可以使用 theSize
的 .width
属性来找出文本的宽度。
注意:这是理论上的说法,未经测试。我希望它有效!期待你如何解决它。 =)
关于iphone - 检查 UINavigationItem 标题是否被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958310/