Hallo zusammen,
ich hab ein Problem mit Auto Layout und NSTableView, vielleicht kann mir jemand helfen..
Folgender, sehr simpler Versuchsaufbau:
Neues OS X - Cocoa - Projekt unter XCode 4.6, dort ins XIB, Auto Layout ist an. Aus der Objektbibliothek eine NSTableView ins Hauptfenster ziehen. Diese Tabelle nun so groß ziehen, dass sie von allen Rändern des umgebenden Fensters genau den Standard-Abstand hat. Das wars schon.
Nun über Editor -> Simulate Document oder den Start des Programms das Fenster auf den Bildschirm bringen. Wenn ich dieses Fenster in der rechten unteren Ecke anfasse, kann ich es horizontal UND vertikal groß und klein ziehen (allerdings gibt es manchmal ein paar 'glitches', z.B. verlässt der Mauspfeil manchmal seinen "Griff" an der Fensterecke).
Wenn ich das Fenster jedoch an seinem unteren Rand anfasse, dann kann ich es vertikal nur noch einen Millimeter kleiner ziehen - größer ist kein Problem. Ziehe ich es an der Ecke auf eine beliebige vertikale Größe, ist dies die (fast) minimale Größe für das größer/kleiner mit Griff an der unteren Kante.
Dies Verhalten ist mir unverständlich, aber der Versuchsaufbau ist so einfach, dass ich mir nicht vorstellen kann, dass es sich um einen Bug handelt, also hab ich wohl was nicht richtig verstanden.
Ich habe mir die 2012er-WWDC-Videos zum Thema Auto Layout angesehen und noch einiges mehr. Mir klingt der Satz im Ohr, dass wenn die GUI unter Auto Layout seltsame Dinge tut und 'glitches' hat, dass dann die Auto-Layout Constraints unterspezifiziert sind. Allerdings wird auch gesagt, dass das im Interface Builder nicht passieren kann, weil dort eigenständige IB-Constraint eingefügt werden, sollten die Benutzer-Constraints nicht ausreichen um Position und Größe eines jeden Controls eindeutig festzulegen.
Wenn ich Auto Layout abschalte und in 'Springs & Struts' alles anschalte (= klebt an allen Rändern und vergrößert sich in beide Richtungen), dann funktioniert alles perfekt. Schalte ich dann wieder nach Auto Layout um, tritt auch wieder beschriebenes Problem auf. Aber ich würde wirklich sehr gerne Auto Layout für die GUI benutzen.
Vielleicht liegt es an den Controls, aus denen die Tabelle zusammengesetzt ist, vieleicht muss ich etwas an den Hugging- oder Compression-Resistance-Prioritäten eines inneren Controls verändern oder vielleicht muss ich sogar programmatisch ran und irgendwelche Eigenschaften ändern.. Ich hab schon alles mögliche probiert, aber leider bisher ohne Erfolg. Das Problem tritt übrigens auch auf, wenn die Tabelle gefüllt und verdrahtet ist..
Falls jemand von euch eine Idee hat.. ?
Kurz zu mir: Ich programmiere schon ziemlich lange, bin aber neu bei Objective C und auch neu in diesem Forum, also Gruß an alle die dies lesen
ich hab ein Problem mit Auto Layout und NSTableView, vielleicht kann mir jemand helfen..
Folgender, sehr simpler Versuchsaufbau:
Neues OS X - Cocoa - Projekt unter XCode 4.6, dort ins XIB, Auto Layout ist an. Aus der Objektbibliothek eine NSTableView ins Hauptfenster ziehen. Diese Tabelle nun so groß ziehen, dass sie von allen Rändern des umgebenden Fensters genau den Standard-Abstand hat. Das wars schon.
Nun über Editor -> Simulate Document oder den Start des Programms das Fenster auf den Bildschirm bringen. Wenn ich dieses Fenster in der rechten unteren Ecke anfasse, kann ich es horizontal UND vertikal groß und klein ziehen (allerdings gibt es manchmal ein paar 'glitches', z.B. verlässt der Mauspfeil manchmal seinen "Griff" an der Fensterecke).
Wenn ich das Fenster jedoch an seinem unteren Rand anfasse, dann kann ich es vertikal nur noch einen Millimeter kleiner ziehen - größer ist kein Problem. Ziehe ich es an der Ecke auf eine beliebige vertikale Größe, ist dies die (fast) minimale Größe für das größer/kleiner mit Griff an der unteren Kante.
Dies Verhalten ist mir unverständlich, aber der Versuchsaufbau ist so einfach, dass ich mir nicht vorstellen kann, dass es sich um einen Bug handelt, also hab ich wohl was nicht richtig verstanden.
Ich habe mir die 2012er-WWDC-Videos zum Thema Auto Layout angesehen und noch einiges mehr. Mir klingt der Satz im Ohr, dass wenn die GUI unter Auto Layout seltsame Dinge tut und 'glitches' hat, dass dann die Auto-Layout Constraints unterspezifiziert sind. Allerdings wird auch gesagt, dass das im Interface Builder nicht passieren kann, weil dort eigenständige IB-Constraint eingefügt werden, sollten die Benutzer-Constraints nicht ausreichen um Position und Größe eines jeden Controls eindeutig festzulegen.
Wenn ich Auto Layout abschalte und in 'Springs & Struts' alles anschalte (= klebt an allen Rändern und vergrößert sich in beide Richtungen), dann funktioniert alles perfekt. Schalte ich dann wieder nach Auto Layout um, tritt auch wieder beschriebenes Problem auf. Aber ich würde wirklich sehr gerne Auto Layout für die GUI benutzen.
Vielleicht liegt es an den Controls, aus denen die Tabelle zusammengesetzt ist, vieleicht muss ich etwas an den Hugging- oder Compression-Resistance-Prioritäten eines inneren Controls verändern oder vielleicht muss ich sogar programmatisch ran und irgendwelche Eigenschaften ändern.. Ich hab schon alles mögliche probiert, aber leider bisher ohne Erfolg. Das Problem tritt übrigens auch auf, wenn die Tabelle gefüllt und verdrahtet ist..
Falls jemand von euch eine Idee hat.. ?
Kurz zu mir: Ich programmiere schon ziemlich lange, bin aber neu bei Objective C und auch neu in diesem Forum, also Gruß an alle die dies lesen