在后退按钮和&之间添加图标导航栏的标题

时间:2010-12-01 11:39:42

标签: iphone size uinavigationbar uibarbuttonitem titleview

我想在导航栏的标题旁边添加一个图标。我宁愿不将它实现为自定义titleView,因为那时我需要为我放在堆栈上的每个控制器创建一个自定义titleView(我有非常深的嵌套)。我现在将UIImageView添加到navigationBar。我的问题是准确计算这个图标的水平位置。它取决于后退按钮的宽度,每次都有另一个标题。如何计算此后退按钮框架?谷歌搜索它似乎没有带来任何合理的结果。

提前致谢

2 个答案:

答案 0 :(得分:0)

您可以计算标签的大小 你的文字,并试验按钮将添加什么..

CGSize s = [label sizeWithFont:_font];

答案 1 :(得分:0)

我遇到了同样的问题。我的解决方案是在灵活空间之后将图标添加为leftBarButtonItems之一。这推动了它的标题。

UIBarButtonItem *space = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
UIView *icon = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleIcon"]] autorelease];
UIBarButtonItem *iconItem = [[[UIBarButtonItem alloc] initWithCustomView:icon] autorelease];
NSArray *items = [NSArray arrayWithObjects: space, iconItem, nil];
self.navigationItem.leftBarButtonItems = items;
self.navigationItem.leftItemsSupplementBackButton = YES;

它与创建自定义titleView不完全相同,但有两种方式:(1)标题文本尽可能保持居中,左侧是图标,而不是将标题和图标居中放在一起; (2)当您将新视图推入堆栈时,图标不会向左滑动并带有标题;相反,它会像其他栏按钮一样淡出。

因此,根据您的要求,此解决方案可能适用于您,也可能不适合您。但至少它避免尝试匹配自定义标题视图中的标准标题文本属性。 (据我所知,没有自动的方法可以做到这一点。)