2012-09-13 11 views
5

Programowo programuję tworzenie NSWindow i elementów sterujących na nim.Kakao: Początek NSView x na dole

Wygląda na to, że początek (0,0) znajduje się w lewym dolnym rogu. Jest to dla mnie dziwne (pochodzące z innych zestawów narzędzi GUI). Czy jest jakaś flaga, żebym mógł to zmienić, aby pochodzenie było w lewym górnym rogu?

Odpowiedz

10

Na OS X początek jest w lewym dolnym rogu. Dotyczy to współrzędnych ekranu i ramek widoku. Możesz zastąpić isFlipped: w podklasie NSView i wrócić YES, aby lewy górny róg był źródłem tego widoku, ale nie sądzę, że istnieje sposób na to samo dla współrzędnych ekranu.

+3

Cóż, tak, również to właśnie zbadałem. Ale czy nie jest łatwiejszy sposób? Czy każdy, kto chce to zrobić, musi zawsze wymyślić taką klasę 'NSFlippedView', która jest po prostu' NSView' z 'isFlipped' zwracającą' YES'? – Albert

+0

Myślę, że w większości przypadków najprostszym rozwiązaniem jest odwrócenie matematyki. To denerwujące, jeśli pochodzisz z programowania na iOS, ale nie jest to takie trudne. – DrummerB

+0

W dokumencie [Cocoa docs] (http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CocoaDrawingGuide/Transforms/Transforms.html) jest napisane: "Jeśli planujesz narysować wszystkie swoje zawartość widoku przy użyciu odwróconych współrzędnych, nadpisanie metody isFlipped widoku jest zdecydowanie preferowaną opcją. " – Albert