1

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

提前致谢

4

2 回答 2

0

您可以计算标签的大小,其中包含您的文本并试验按钮将添加的内容..

CGSize s = [label sizeWithFont:_font];
于 2010-12-08T13:52:52.237 回答
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) 当你将一个新视图压入堆栈时,图标不会随标题向左滑动;相反,它会像其他条形按钮项目一样淡出。

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

于 2013-10-27T23:38:24.410 回答