2014-08-07 1 views
0

Я делаю приложение для iPhone, и у меня есть UINavigationController в качестве моего корневого представления, а затем UIVIewControllers. Моя кнопка «Регистрация» переходит на экран регистрации, который автоматически создает панель навигации для меня с помощью кнопки «Назад» в верхнем левом углу.Размещение кнопок на панели навигации

я заменил стандартную кнопку назад с моим собственным изображением на коде ниже:

UIImage *backImage = [UIImage imageNamed:@"customBackButton.png"]; 
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
backButton.frame = CGRectMake(0, 0, 100, 70); 
[backButton setImage:backImage forState:UIControlStateNormal]; 
[backButton addTarget:self action:@selector(popNavigationController:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton] ; 
self.navigationItem.leftBarButtonItem = backBarButtonItem; 

Я также добавил rightBarButtonItem, чтобы проверить, но мой вопрос, однако, что оба эти кнопки Арентов в углах экран, как можно видеть здесь. enter image description here

Большинство других приложений есть навигационные кнопки панели прямо в углах, как можно видеть из другого приложения, которое я нашел в Интернете в качестве ссылки

enter image description here

Я попытался изменить значения здесь, но что ничего не делает - кнопки остаются там, где они есть.

// Changing frames x-coordinate 
backButton.frame = CGRectMake(-220, 0, 100, 70); 

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

EDIT: Если я использую [backButton sizeToFit]; мое изображение отображается ниже (верхняя серая полоса - панель навигации). Нужно ли сделать изображение правильного размера?

enter image description here

ответ

1

Если вы хотите изменить положение UIBarButtonItem вы должны использовать поддельные штриховые элементы распорок

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
negativeSpacer.width = -10; 

Теперь вы можете установить массив стержневых элементов для достижения результата необходимо

self.navigationItem.leftBarButtonItems = @[negativeSpacer, backBarButtonItem]; 
+0

Yip, это сделало трюк спасибо – heyred

0

Ширина кнопок слишком велик. Удалите эту строку:

backButton.frame = CGRectMake(0, 0, 100, 70); 

, а затем вызвать

[backButton sizeToFit]; 

после

[backButton setImage:backImage forState:UIControlStateNormal]; 

Если это не работает, то возможно, что есть белое пространство, запеченный в самих изображений PNG.

+0

ОК, так что я есть чтобы сделать изображение правильного размера? Когда я реализую ваше решение и размещаю код, как было предложено, моя кнопка ОГРОМНАЯ и размещена прямо в середине панели навигации. Я отредактирую свой вопрос, чтобы показать, что я имею в виду – heyred

0

Вы пробовали обрезать изображение, которое используете (customBackButton.png), чтобы избавиться от любых прозрачных полей? Похоже, что изображение может быть немного шире. Тогда вы можете уменьшить ширину от 100 пикселей до чего-то меньшего, и все должно быть лучше.

+0

Да, я проверил изображение, и на нем нет прозрачных краев. Изображение обрезается прямо к краям формы шестиугольника. – heyred