当navigationItem.titleView和rightBarButtonItem占用大部分UINavigationBar时,如何阻止leftBarButtonItem消失?

时间:2013-01-07 21:26:57

标签: objective-c ios uinavigationbar uibarbuttonitem uinavigationitem

这是我的困境。在Objective-C和iOS编程方面,我和我一样裸露,因为我有点像菜鸟。我有leftBarButtonItem(使用自定义视图)作为后退按钮的替代(因为backBarButtonItem上不能使用自定义视图)。我还有rightBarButtonItem(也使用自定义视图)和自定义titleView。

leftBarButtonItem小于某个宽度时,一切正常并且花花公子。 rightBarButtonItem可能很大,titleView将调整大小并截断以适应可用空间,这正是应该如何,以及我想要它。

但是,如果相反的尺寸相反(rightBarButtonItem小于某个宽度且leftBarButtonItem巨大),则leftBarButtonItem会完全消失,titleView会拉伸以适应之前同时拥有leftBarButtonItemtitleView的整个空间。

我尝试交换自定义视图以查看它是否是我所做的事情,但是同样的问题仍然存在,视图交换了,仅在leftBarButtonItem上。我也尝试使用常规标题,没有自定义titleView,但无济于事。

UINavigationItem的文档中,在leftBarButtonItems下,它指出“如果没有足够的空间来显示数组中的所有项目,那些将与标题视图重叠的项目(如果存在) )或者不显示栏右侧的按钮。“但是,应该有足够的空间来容纳按钮和标题,正如具有巨大的rightBarButtonItem和截断的标题所证明的那样。更不用说,只有一个leftBarButtonItem,而不是多个,我需要它来替换后退按钮功能。

有关如何阻止这种情况发生的任何想法?这是我正在使用的代码片段:

self.navigationItem.titleView = [[TitleView alloc] initWithFrame:CGRectMake(0, 0, 220, 44)];
self.navigationItem.titleView.backgroundColor=[UIColor clearColor];

FollowButton *follow = [[FollowButton alloc] initWithFrame:CGRectMake(0, 0, 62, 34)];
UIBarButtonItem *followButton = [[UIBarButtonItem alloc] initWithCustomView:follow];
self.navigationItem.rightBarButtonItem = followButton;

BackButton *back = [[BackButton alloc] initWithFrame:CGRectMake(0, 0, 108, 34)];
[back addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:back];
self.navigationItem.leftBarButtonItem = backButton;

2 个答案:

答案 0 :(得分:1)

使抗压强度优先级提高BackButton

答案 1 :(得分:0)

您可以查看标题栏按钮的宽度吗?它实际上是缩小还是x位置只是改变并且它被推离屏幕....如果宽度实际上变成“0”而不是你应该强制将它设置回加载后的所需宽度其他按钮完成。