Могу ли я изменить положение элемента панели навигации? - PullRequest
21 голосов
/ 26 марта 2012

Вот снимок: enter image description here

И код здесь:

UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
leftButton.frame = CGRectMake(0.0f, 0.0f, 46.0f, 32.0f);
[leftButton setBackgroundImage:[UIImage imageNamed:@"navi_register_up.png"] forState:UIControlStateNormal];
[leftButton addTarget:self action:@selector(doRegister) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
self.navigationItem.leftBarButtonItem = leftBarItem;
[leftBarItem release];

Есть ли способ переместить кнопку вверх на пиксель? Спасибо:)

Ответы [ 7 ]

70 голосов
/ 25 января 2013

Вам необходимо создать UIBarButtonItem с системным элементом UIBarButtonSystemItemFixedSpace с шириной -5, который удалит заполнение 5 px.Затем установите leftBarButtonItems как с фиксированным пробелом, так и с вашей задней панелью, как это -

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[negativeSpacer setWidth:-5];

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftBarItem,nil];
13 голосов
/ 26 марта 2012

Вы можете попробовать это,

leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2, 0, 0, 0);
4 голосов
/ 26 марта 2012

Добавьте элемент UIBarButtonSystemItemFlexibleSpace между элементами, которые вы хотите отделить.

1 голос
/ 19 сентября 2017

Вот вариант Swift 3 с самым популярным ответом:

 let soundButton = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.soundPressed))

        let negativeSpacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
        negativeSpacer.width = -5

        self.navigationItem.rightBarButtonItems = [negativeSpacer,soundButton]
0 голосов
/ 27 августа 2017

У меня была похожая проблема, и я нашел вариант, которого было достаточно в раскадровке.Просто нажмите на элемент панели навигации, и вы должны увидеть опции положения x / y.

enter image description here

0 голосов
/ 13 февраля 2013

Вы можете использовать этот код, я думаю, он будет вам полезен. UIButton * button = [UIButton buttonWithType: UIButtonTypeCustom]; button.frame = CGRectMake (0,0,50,32); [кнопка setBackgroundImage: [UIImage imageNamed: @ "btn_back.png"] forState: UIControlStateNormal];

[button addTarget:self action:@selector(BackBtnClicked) forControlEvents:UIControlEventTouchUpInside];
UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 32)];
backButtonView.bounds = CGRectOffset(backButtonView.bounds, -1, -4);
[backButtonView addSubview:button];

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
//barButtonItem.imageInsets = UIEdgeInsetsMake(-6, 20, 30, 0);

[self.navigationItem setLeftBarButtonItem:barButtonItem];
0 голосов
/ 26 марта 2012

Высота стандартной кнопки панели 29pt.Сделайте себе одолжение и просто уменьшите leftbutton рост и navi_register_up.png рост вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...