2009-05-08 27 views
1

Grüße alle,funktioniert nicht?

Ich habe ein verwirrendes Problem. Ich habe einen Zeiger auf eine Vanille NSView, die in einer Feder initialisiert wurde. I-Nachricht mit der NSView

[myNSView setFrame:NSMakeRect(0,0,816,1056)]; 

aber wenn ich durch den Debugger Schritt hat einen Rahmen von myNSView {{0,0}, {801, 1041}}. Die Abmessungen des Rechtecks ​​sind 15 weniger als ich angegeben habe! Dies geschieht konsequent. Wenn ich zwei [setFrames] nacheinander anführe, funktioniert alles, aber das ist natürlich nicht die Antwort.

Zusammenfassend, weiß jemand, warum SetFrame fehlschlagen würde?

Dank

+0

Ich habe ehrlich gesagt keine Ahnung. Das sollte funktionieren. Könntest du mehr Kontext geben? – Kriem

+0

Ich zeichne benutzerdefinierten Inhalt, sagen Sie eine Seite mit Text. Ich beginne mit einer Bildlaufansicht und einem eingebetteten Bild, das eine Seitenansicht ist. Ich habe zwei Aktionen, Seite anpassen und 100% anzeigen (ähnlich wie bei anderen Zuschauern). Ich möchte in der Lage sein, zu vergrößern und zu verkleinern. Um dies zu tun, ändere ich die Bildgröße der Seitenansicht, und ich hoffe, dass die Bildlaufansicht kümmert sich um das Schwenken. Es funktioniert meistens, bis auf das seltsame Größenänderungsverhalten der Seitenansicht. – EightyEight

+0

Hmm, die Einbettung könnte mit deinen Dimensionen herumspielen. Ansonsten habe ich noch keine Ahnung. Es tut uns leid. :) Ich habe die Frage trotzdem gewählt, vielleicht kann dir jemand anders helfen. Viel Glück aber! – Kriem

Antwort

4

15px ist genau die Größe eines NSScroller bei NSRegularControlSize.

Meine Vermutung ist, dass Sie Ihre NSScrollView so konfiguriert haben, dass Scroller automatisch ausgeblendet werden.

Versuchen Sie, die horizontalen und vertikalen Scroller von Ihrem scrollView in der NIB zu deaktivieren, wenn das das Problem löst, werden Sie wissen, von wo aus Sie suchen. Es ist etwas mit der clipView der scrollView Autoresizing der documentView verwandt. Die clipView selbst wird autorisiert, wenn die Scroller erscheinen; Direkt nachdem Sie die documentView auf eine frameSize (die 100% Einstellung, die ich erraten möchte) eingestellt haben, die Scroller benötigt.

+0

Das war großartig, vielen Dank! Ich drehte die Scroller und alles passt jetzt. So ist die Argumentation etwas wie folgt aus: 1. ich die Seitenzugriff Größe 2. Scroll-Ansicht Updates ändern scrollers schließen scrollers 3. Clipview passt die Größe zu empfangen und passt die Größe Subviews die Seitenzugriff enthält. Richtig? – EightyEight

+0

Ja, genau :) Wenn Sie Ihren setFrame umgeben: Anruf mit [[theScrollView contentView] setAutoresizesSubviews: NO]; und schalte es dann wieder an, wenn ich fertig bin, denke ich, dass das den Trick machen sollte. –

Verwandte Themen