我有一个包含以下内容的导航栏:
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.width
和navBar.title.origin
之类的东西,这样我就可以弄清楚从导航栏的右边到标题有多少点?
答案 0 :(得分:0)
要计算导航栏中标题的大小,您只需要关注。
NSDictionary *attributes = [self.navigationController.navigationBar titleTextAttributes];
CGSize titleSize = [self.title sizeWithAttributes:attributes];
现在您可以使用标题的大小和按钮的大小来计算固定空间的宽度。