2014-02-21 2 views
0

У меня есть Navbar со следующим:Дистанционные кнопки NavBar так кнопка находится рядом с названием

слева: Стрелка назад со словом «назад» весь путь к левому

право: 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

Возможно, было бы лучше установить 'titleView' в пользовательское представление с меткой для названия и кнопкой, которую вы хотите. – rmaddy

ответ

0

Чтобы вычислить размер заголовка на панели навигации, вам просто нужно следовать.

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

Теперь вы можете использовать размер заголовка и размер кнопок для расчета ширины фиксированного пространства.

+0

Отлично! Только то, что мне нужно, спасибо! – Hash88

Смежные вопросы