间距导航栏按钮,因此按钮就在标题旁边

时间:2014-02-21 22:45:35

标签: ios title uibarbuttonitem navbar

我有一个包含以下内容的导航栏:

left:向后箭头,单词“back”一直到左边

右:2条按钮一直到右边

中心:标题文字

我想在右边的那些按钮(这些按钮的左侧)添加第三个按钮,但我希​​望这个新按钮和其他按钮之间有空间,这样这个新按钮就会紧紧抓住标题的右侧。我尝试使用FixedSpace BarButtonItem。这是我到目前为止所得到的:

UIBarButtonItem* space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
space.width = 160;
UIBarButtonItem* thirdButton = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStylePlain target:self action:@selector(action)];

NSMutableArray* buttons = [self.navigationItem.rightBarButtonItems mutableCopy];       
//index 0 & 1 are the buttons that are already there
[buttons setObject:space atIndexedSubscript:2];
[buttons setObject:button atIndexedSubscript:3];
[self.navigationItem setRightBarButtonItems:buttons];

这样做确实会在第三个按钮和其他按钮之间创建一个空格。问题是,标题可以是动态的,并且由于这个固定的空间,它不是中心。向右添加固定空间会导致标题向左移动,看起来很奇怪,具体取决于标题大小。我需要一种方法来确定标题的位置和它的长度。有没有办法做到这一点?像navBar.title.widthnavBar.title.origin之类的东西,这样我就可以弄清楚从导航栏的右边到标题有多少点?

1 个答案:

答案 0 :(得分:0)

要计算导航栏中标题的大小,您只需要关注。

NSDictionary *attributes = [self.navigationController.navigationBar titleTextAttributes];
CGSize titleSize = [self.title sizeWithAttributes:attributes];

现在您可以使用标题的大小和按钮的大小来计算固定空间的宽度。