2011-01-17 4 views
2

hinzugefügt ich den folgenden Code in meiner Root-View-Controller-Klasse Implementierung mit:UISegmentedControl nicht auf UINavigationController zentriert, wenn programmatisch

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSArray *segmentTextContent = [NSArray arrayWithObjects: 
            NSLocalizedString(@"button1", @""), 
            NSLocalizedString(@"button2", @""), 
            NSLocalizedString(@"button3", @""), nil]; 

    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] nitWithItems:segmentTextContent]; 
    segmentedControl.selectedSegmentIndex = 0; 
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
    segmentedControl.frame = CGRectMake(0, 0, 400, 30); 

    self.navigationItem.titleView = segmentedControl; 
    [segmentedControl release]; 
} 

Die segmentierte Kontrolle nicht korrekt zentriert ist, wird es ein paar Pixel nach rechts verschoben . Das Lustige ist, dass es auch nicht richtig ausgerichtet ist. Es ist so, als ob es eine linke Polsterung gibt, die verhindert, dass es zentriert wird. Eine andere lustige Sache ist, wenn ich dieses segmentierte Steuerelement in Interface Builder zeichne, ist es perfekt zentriert, so dass dies nur ein programmatisches Thema ist.

Ich habe diesen Code in einer neuen leeren App Marke versucht und die gleichen Ergebnisse erhalten, so dass ich weiß, es ist nicht etwas anderes in meiner Anwendung, die es verursacht.

Sorry, ich wollte einen Screenshot schreiben, aber ich habe nicht genug Ruf Punkte ;-)

Irgendwelche Ideen?

+0

Gibt es möglicherweise eine linke Taste? Es könnte klar sein, damit du es nicht sehen kannst. Überprüfen Sie IB, um sicher zu sein. – ughoavgfhw

Antwort

0

Es gibt keine linke Taste, ich habe dabei auch versucht:

self.navigationItem.leftBarButtonItem = nil; 
self.navigationItem.backBarButtonItem = nil; 

Wie gesagt, es in IB funktioniert, nur nicht im Code. Und es nicht auch in einem ganz neuen Projekt - Sie können es selbst ausprobieren können und sehen ...

Ich schien das Update gefunden zu haben. Die für die Breite angegebene 400 verursachte das Problem. Ich habe 300 angegeben und jetzt ist es richtig zentriert. Ich sollte im Idealfall sollte ich einige globale Bildschirmbreite Wert werden Grabbing statt Hartcodierung 300

+0

Sie sollten diese Antwort löschen (da es keine Antwort ist) und Ihre ursprüngliche Frage mit diesen Informationen aktualisieren. (Oder antworten Sie einfach auf @ ughoavgfhw Kommentar durch einen Kommentar des eigenen hinzufügen. Wenn Sie „@ughoavgfhw“ im Kommentartext verwenden werden, es ließ ihn Kommentar kennen, wurde hinzugefügt.) :-) –

+0

würde ich es löschen lieben, aber ich sehe keinen Weg, das zu tun. Ich sehe eine Möglichkeit, es zu bearbeiten, aber nicht zu löschen. – bpatrick100