2010-10-22 29 views
20

Ich habe zwei ViewControllers, eine ist eine Unterklasse von UIViewController (Autoresizes korrekt), die andere ist eine Unterklasse einer Unterklasse von UIViewController.
Ich habe ein Layout in Interface Builder, ich habe meinen Code im Simulator getestet und alles funktioniert wie erwartet. Aber wenn ich das Gerät rotiere, ändern sich meine Ansichten nicht.
Also ging ich zurück zum Interface Builder und fand heraus, dass ich die Größenänderungseigenschaft der "root" -UIView nicht ändern kann. Also habe ich eine andere Datei geöffnet und die Größenänderungseigenschaft ist auch dort festgelegt. Aber es wird in beiden Richtungen skaliert. Das ist das Verhalten, das ich will.Problemeinstellung Autosizing in Interface Builder

Wie kann ich die Autoresizing der oberen UIView ändern, damit es tut was ich will?
Es gibt nicht so viele Subviews, dass es unmöglich ist, von vorne anzufangen, aber ich möchte das nicht tun.

Interface Builder, Autoresizing Mask

Antwort

24

Ich lief dies in vor und es war unglaublich frustrierend. Es stellt sich heraus, dass wenn Sie Elemente der simulierten Benutzeroberfläche aktiviert haben, Sie die Streben und Federn nicht wie gewünscht ändern können.

Wechseln Sie zur Registerkarte Attribute (Cmd-1) und stellen Sie sicher, dass Statusleiste, obere Leiste, untere Leiste und geteilte Ansicht alle auf "Nicht angegeben" gesetzt sind. Kehren Sie dann zur Registerkarte Größe (Cmd-3) zurück, und Sie können auf die Linien klicken und Ihre Struts und Federn ändern. Dann können Sie schließlich zu Cmd-1 zurückkehren und diese simulierten Elemente wieder einschalten.

+0

Sie erhalten einen goldenen Stern für diese. DANKE! – sean808080

+0

'cmd + 1' öffnet den' Projektnavigator' !!!!!!!!!!!!!!!!! –

+0

@lulian, Das liegt daran, dass Xcode die Tastenkürzel geändert hat. Das war 2011 richtig. –

13

Ich habe eine vereinfachte Antwort:

  1. Goto IB
  2. Klicken Sie auf die
  3. Goto 'Viewcontroller' 'Attribute Inspector'
  4. Change 'Größe' auf 'Freeform' (etwas anderes als 'Inferred')

Was Sie haben, ist dies:

enter image description here

Ändern Sie "Größe" in "Freiform" & versuchen Sie es jetzt!

enter image description here

Nun, es funktioniert! Gehen Sie zurück & ändern Sie es in "abgeleitete", nachdem Sie die Autoresizing-Masken festgelegt haben.

+0

Ausgezeichnet, danke. – Robert

0

öffnen Main.storyboard als Quelle (vergessen Sie nicht, es ist nur eine XML-Datei) und „autoresizingMask“ Tag in der Ansicht mit der folgenden Zeile ersetzen:

<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>