Check if UINavigationItem title is truncated

Posted by PartiallyFinite on Stack Overflow See other posts from Stack Overflow or by PartiallyFinite
Published on 2012-06-09T04:14:14Z Indexed on 2012/06/09 10:40 UTC
Read the original article Hit count: 381

Filed under:
|
|
|
|

I want to check whether the title of a UINavigationItem is truncated.

I set the title like this: self.navigationItem.title = whatever.

I know I can check if the text in a UILabel is truncated like this:

CGSize size = [label.text sizeWithFont:[UIFont fontWithName:@"myfont" size:18.0]];
if (size.width > label.bounds.size.width) {
    // set a shorter title
}

And I can even find the UINavigationItemView object in which the title is displayed like so:

UIView *navItemView;
for (UIView *view in self.navigationController.navigationBar.subviews) {
    if ([view isKindOfClass:NSClassFromString(@"UINavigationItemView")]) {
        navItemView = view;
    }
}

But I cannot apply this method to the navItemView because is always seems to have a width of exactly 58, which is much less than the title in it, so according to that, it would appear that the title is truncated, even when it isn't.

So, my question comes down to this: How do I find the width of the title displayed in the UINavigationItem?

UPDATE: I have found a solution to my problem, but it isn't exactly ideal, perfect, or reliable, so I am not marking it as an answer yet. If anyone has any better solutions, please share them.

© Stack Overflow or respective owner

Related posts about iphone

Related posts about objective-c