добавление значка между кнопкой «Назад» и заголовком панели навигации - PullRequest
1 голос
/ 01 декабря 2010

Я хочу поставить значок рядом с заголовком панели навигации. Я бы предпочел не реализовывать его как пользовательский titleView, потому что тогда мне нужно будет создать собственный titleView для каждого контроллера, который я помещаю в стек (и у меня довольно глубокая вложенность). Я добавляю в настоящее время как UIImageView к навигационной панели. Моя задача - точно рассчитать горизонтальное положение этого значка. Это зависит от ширины кнопки «Назад», которая каждый раз имеет другой заголовок. Как рассчитать этот кадр кнопки назад? Похоже, поиск в Google не принесет никаких разумных результатов.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 28 октября 2013

Я столкнулся с этой же проблемой.Мое решение состояло в том, чтобы добавить значок в качестве одного из элементов 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) когда вы помещаете новый вид в стек, значок не сдвигается влево с заголовком;вместо этого он исчезает, как и другие элементы панели кнопок.

Так что, в зависимости от ваших требований, это решение может работать или не работать для вас.Но, по крайней мере, это позволяет избежать попыток сопоставить стандартные текстовые атрибуты заголовка в пользовательском представлении заголовка.(Насколько я могу понять, автоматического способа сделать это не существует.)

0 голосов
/ 08 декабря 2010

Вы можете рассчитать размер метки с вашим текстом и поэкспериментировать с тем, что добавит кнопка ..

CGSize s = [label sizeWithFont:_font];
...