NSView Größe programmatisch ändern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSView Größe programmatisch ändern

    Hallo,

    erst einmal: bitte verbessert mich, wenn ich grundlegende Fehler mache.

    Im Interfacebuilder habe ich ein Custom View und ein Object meiner Klasse - AppController - angelegt. Die AppController Klasse hat dann als Property das View. Dann habe ich das View ausgewählt und über Menü>Editor>Embed In>Scroll View um die Scrollfunktion ergänzt. Mein Programm funktioniert einwandfrei, wenn ich im Interface Builder für mein View die Breite und Höhe festlege.
    Tue ich das nicht erscheint kein View. (Habe ich mir damit erklärt, dass das View - wenn es im Scroll View drin ist - nicht die Maße aus dem Interface Builder übernimmt)

    Mein Vorhaben ist nun, die Größe des Views über das Programm festzulegen. Dazu habe ich folgenden Code gefunden:

    Quellcode

    1. [<myView> setFrame:<NSRect>]; //oder auch:
    2. [<myView> setFrameSize:<NSSize>];

    Ich habe versucht, dies in der AppController Klasse auszuführen, leider ohne Erfolg. (keine Fehlermeldung, funktioniert einfach nicht -> ich bekomme kein View)
    Was muss ich ändern, damit das View angezeigt wird und ich die Größe während der Laufzeit ändern kann?

    Tom
  • Ich habe jetzt mal ein IBOutlet erstellt, für das NSScrollView bekomme ich aber einen Fehler: No visible @interface for 'NSScrollView' declares the selector 'setContentSize'
    In der NSScrollView Class Reference finde ich auch nur eine Methode um die ContentSize auszulesen, nicht eine um sie zu setzten.

    Ich habe jetzt noch zwei IBOutlets erstellt (NSLayoutConstraint) und im Interfacebuilder für das View in dem ScrollView/ClipView die Constraints für die Breite und Höhe gesetzt. Dann habe ich die Outlets mit diesen Constraints verbunden und kann diese nun programmatisch ändern ([<Constraint> setConstant:<CGFloat>]). Funktioniert soweit.
    Ist das eine akzeptable Herangehensweise oder sollte ich das anders lösen?

    Wahlweise könnte man die Constraints auch gleich programmatisch setzen.

    Tom
  • moTTom schrieb:

    Ich habe jetzt mal ein IBOutlet erstellt, für das NSScrollView bekomme ich aber einen Fehler: No visible @interface for 'NSScrollView' declares the selector 'setContentSize'
    In der NSScrollView Class Reference finde ich auch nur eine Methode um die ContentSize auszulesen, nicht eine um sie zu setzten.

    Unter OS X ist das auch ein wenig anders, als unter iOS.

    moTTom schrieb:

    Ich habe jetzt noch zwei IBOutlets erstellt (NSLayoutConstraint) und im Interfacebuilder für das View in dem ScrollView/ClipView die Constraints für die Breite und Höhe gesetzt. Dann habe ich die Outlets mit diesen Constraints verbunden und kann diese nun programmatisch ändern ([<Constraint> setConstant:<CGFloat>]). Funktioniert soweit.
    Ist das eine akzeptable Herangehensweise oder sollte ich das anders lösen?

    Ja, bei Verwendung von Autolayout muss man die Constraints anpassen. Das setzen von Frames wird durch das Autolayout „überstimmt“.

    Michael