2012-03-26 24 views
19

Hier ist die Momentaufnahme: enter image description hereKann ich die Position der Navigationsleiste ändern?

Und der Code ist hier:

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]; 

Gibt es eine Möglichkeit, die Taste nach oben einige Pixel zu bewegen? Vielen Dank :)

Antwort

4

Fügen Sie einen UIBarButtonSystemItemFlexibleSpace Artikel zwischen den Elementen hinzu, die Sie trennen möchten.

+0

UIBarButtonSystemItemFlexibleSpace können Elemente in horizontaler trennen. Aber ich möchte den Knopf hochziehen. Kann UIBarButtonSystemItemFlexibleSpace helfen? –

+0

Nicht vertikal, nein. Sie können immer eine UIToolbar verwenden und ein UILabel mit dem Rahmen hinzufügen, den Sie vertikal positionieren müssen, und dann die entsprechenden Schaltflächen hinzufügen. – WrightsCS

0

Die Höhe einer Standard-Bar-Taste beträgt 29pt. Tun Sie sich einen Gefallen und schrumpfen Sie einfach leftbutton Höhe und navi_register_up.png Höhe.

11

du versuchen,

leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2, 0, 0, 0); 
+0

Es funktioniert nicht ... –

+0

@ 理想 评论 学派, ich habe dies getestet, es kann das Bild des UIButton verschieben. :) – looyao

+0

Testen Sie mit meinem Code? Fügen Sie einfach "leftButton.imageEdgeInsets = UIEdgeInsetsMake (-2, 0, 0, 0);" ? Ich werde es wieder überprüfen –

67

Sie benötigen ein UIBarButtonItem mit System Artikel UIBarButtonSystemItemFixedSpace mit -5 Breite zu schaffen, die 5 px Polsterung entfernen. Dann setzen leftBarButtonItems sowohl mit festen Platz Element und dem Rücken Bar Artikel wie dieser -

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

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftBarItem,nil]; 
+7

Funktioniert gut, wenn Sie UIBarButtonItem horizontal verschieben müssen. – florian

+0

Sie sind ein Star Mann. +1 von mir. – Nilesh

+3

Hmm, das funktioniert, aber scheint nur für einen Knopf zu funktionieren spacer and button scheint nicht zu funktionieren. Gedanken? – d2burke

0

Sie diesen Code verwenden können, ich denke, das hilfreich für Sie sein wird. UIButton * button = [UIButton buttonWithType: UIButtonTypeCustom]; button.frame = CGRectMake (0,0,50,32); [Schaltfläche 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

Ich hatte ein ähnliches Problem und fand eine Option, die im Storyboard ausreichte. Klicken Sie einfach auf den Navigationsbereich und Sie sollten die x/y-Positionsoptionen sehen.

enter image description here

1

Hier ist ein Swift 3-Version der meisten Stimmen Antwort:

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] 
Verwandte Themen