NSView ' s autoresizing Verhalten

Brauche ich, um zu verstehen, wie NSView autoresizes es ist Aussicht. Ich habe alles eingestellt bis in IB und meine Untersichten Größe schön (wenn ich die Größe meiner Fenster, um mit einer Maus). Allerdings, wenn ich [myMainView setFrame:] mit meinem neuen Rahmen rect, passiert nichts. Alle meine sub-views sind immer noch in der ursprünglichen Größe (obwohl die Hauptansicht hat die richtigen Maße). Kindes resizeWithOldSuperviewSize: aufgerufen wird, aber es ist immer noch nicht entsprechend dimensioniert.

Ich habe einen Bildschirm-volle Kakao-Elemente auf dem Bildschirm (screen #1), label, Bild, video. Es gibt eine gut definierte layout für diese Elemente. Ich habe setup autoresizing Verhalten über den Interface Builder, der funktioniert sehr gut. Größenänderung des Hauptfensters die Größe der Elemente in einer befriedigenden Weise.

Nun klickt der Benutzer auf die Schaltfläche "weiter", woraufhin eine zweite screenfull der Elemente (screen #2) gezeichnet werden. Meine layouts gebaut werden basierend auf einer kanonischen Auflösung (z.B. 800x600). Aber jetzt ist das Fenster größer (oder kleiner), weil es wurde geändert in screen #1. So sind die Elemente nun nur durch einen kleinen Bereich in dem Fenster, anstatt von geeigneter Größe, um den verfügbaren Platz auszufüllen. Ich möchte die Skalierung dieser Elemente.

Bin ich Missverständnis, wie autoresizing funktioniert? Wie kann ich trigger die autoresize Maschinen unter NSView manuell?

Gibt es zwei Dinge, die ich tun kann:

  1. Manuell ändern der Größe der Elemente, basierend auf dem aktuellen Bildschirm Größe im Verhältnis zur ursprünglichen Größe. Diese option ist nicht mein Favorit, weil scheinbar bin ich gezwungen neu zu schreiben den code, der bereits funktioniert in NSView (die autoresizing Verhalten
  2. Meine zweite option ist das aufrufen der oben genannten NSView ' s autoresizing Magie. Dokumentation bedeutet, dass [NSView setFrame:] wird das für mich tun. Was ich versucht habe war, "resize" meine Inhalte anzeigen, um die ursprüngliche Auflösung (800x600), render meine Elemente und ändern Sie dann die Größe der aktuellen Fenster-Größe. Konzeptionell ist es nicht identisch mit dem manuell die Größe des Fensters? Es scheint nicht zu sein. Wieder, diese option ist vorzuziehen, da es reduziert die Menge an code, der der te geschrieben werden und gepflegt werden.
Versuchen Sie resizeSubviewsWithOldSize: oder setAutoresizesSubviews:.
Ich bin mir nicht sicher, was Sie hier bedeuten. Eltern resizeSubviewsWithOldSize aufgerufen wird, setAutoresizesSubviews auf ja gesetzt ist. Können Sie uns noch weitere Anleitungen bitte?
Die erstere, weil letztere—wenn autoresizesSubviews auf JA gesetzt ist, dann resizeSubviewsWithOldSize: sollte aufgerufen werden, automatisch. Da haben Sie es so eingestellt und das ist passiert, da bin ich überfragt, zu. Sorry.
Nicht sicher, warum dieser geschlossen ist, wie es ist das exakt gleiche problem, ich bin vor...

InformationsquelleAutor | 

Schreibe einen Kommentar