2012-08-22 7 views
11

Ich habe einen View-Controller mit einer Schaltfläche, die eine Storyboard-Modal-Segue mit dem partiellen Curl-Übergang aktiviert.Rogue Animation von UISegmentedControl unter Partial Curl

Auf dem View-Controller, der aufgedeckt wird, habe ich eine UISegmentedControl.

Zuletzt habe ich die Schriftgröße der UISegmentedControl reduziert.

Wenn die Taste gedrückt wird, wird die Seite gelockert, um die segmentierte Steuerung zu zeigen - während der Curl-Animation können Sie deutlich die segmentierte Steuerung von Null Breite bis zur tatsächlichen Breite animieren - es sieht sehr seltsam und unordentlich aus, und ich kann nicht herausfinden, warum das passiert!

konnte ich den Effekt reproduzieren, wie folgt:

  • Projekt einzigen Ansicht erstellen
  • Sekunden-View-Controller auf dem Storyboard
  • eine UIButton zur ersten View-Controller ein
  • hinzufügen hinzufügen UISegmentedControl an die neue Ansicht Controller
  • Verknüpfen Sie die Schaltfläche mit der zweiten Ansicht mit einer Partial Curl Modal Segue
  • eine Klasse-Datei zum Projekt hinzufügen, von UIViewController geerbt
  • ein IBOutlet für die segmentierte Steuerung an die neue Klasse hinzufügen
  • Link zu den zweiten View-Controller an die neue Klasse und die segmentierte Steuerung mit dem Ausgang
  • in viewDidLoad: in der neuen Klasse hinzufügen:

    [segmentedControl setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIFont boldSystemFontOfSize:14] forKey:UITextAttributeFont] forState:UIControlStateNormal]; 
    

Ein ähnlicher Effekt auch wenn die Locke in landscap zu öffnen ist erlaubt zu sehen ist e

+3

Diese Frage scheint ähnlich wie http://stackoverflow.com/questions/9741052/ios-how-to-stop-text-animation-in-partial-curl zu sein. Haben Sie versucht, '[self.view layoutIfNeeded]' zur Implementierung von '-viewDidLoad' hinzuzufügen? –

+0

Außerdem habe ich alle Ihre Schritte reproduziert und dieses Problem nicht bekommen. Welche Version von XCode verwenden Sie? Was sind dein Basis-SDK und dein Bereitstellungsziel? In der Zeile, die du in 'viewDidLoad:' steckst, nennst du 'segmentedControl',' self.segmentedControl' oder '_segmentedControl' direkt, weil du das ivar direkt deklarierst? – Zedenem

+0

geben Sie uns bitte die gesamte ViewDidLoad. Nicht sicher, was aus den von Ihnen bereitgestellten Informationen geschieht. – metsburg

Antwort

0

Ich bin auf etwas Ähnliches gestoßen. Versuchen Sie, die selectedSegmentIndex direkt vor der Locke zu ändern (Sie können es auf -1 setzen, um die Auswahl aufzuheben), um die Breite des Steuerelements zu erzwingen.