OSX Fullscreen App

N

nolis

Mitglied
Thread Starter
Dabei seit
04.09.2007
Beiträge
85
Reaktionspunkte
0
Hy,
ich bin echt extrem blutiger Anfänger was XCODE betrifft, ich kenn mich zwar mit Webprogramierung wie PHP, Mysql, html, js ajax, recht gut aus, bei xcode habe ich aber noch nicht ganz den durchblick...

Erster Versuch: Ein Fullscreen App für OSX zu erstellen, dazu hab ich mir, ein recht "hilfreiches" Youtube Video angesehen und wollte es gleich nachmachen: Quelle: http://www.youtube.com/watch?v=ALDmCw41uJ0

Leider kann man den wichtigsten Teil des Codes am Video jedoch nicht erkennen, daher habe ich das mal so weit es ging abgeschrieben:

PHP:
	[window orderOut:self];
	NSRect screenRect = [[NSScreen mainScreen] frame];
	NSView * iv = [window contentView];
	self.window = [[NSWindow alloc] initWithContentRect:NSMake(0,0, screenRect.si.........
	[self.window setContentView:iv];
	[self.window setLevel:CGShieldingWindowLevel()];
	[self.window makeKeyAndOrderFront:self];
Die Zeile mit self.window = usw... war leider nicht weiter sichtbar, XCODE hat mir das dann so verfollständigt:
PHP:
self.window = [[NSWindow alloc] initWithContentRect:NSMake(0,0, screenRect.size)];

Das ergibt mir jedoch einen Error in dieser Zeile...
Hat jemand Ahnung wie man das richtig Verfolständigt oder vl. ein anderes Tutorial wie man ein Fullscreen App erstellen kann, es müsste jedoch echt gut und simpler erkärt sein sodass ich das auch verstehe oder nachbauen kann, da ich einfach noch zu wenig Ahnung von Xcode habe.

greetz ;-)
 
Zuletzt bearbeitet:
Die Zeile soll vermutlich so aussehen:

Code:
self.window = [[NSWindow alloc] initWithContentRect:NSRectMake(0,0, screenRect.size.width, screenRect.size.height)];
 
THX Stan,
hab ich mal versucht, jedoch wird mir dabei dieser Fehler und Warning angezeigt:
dabei ist ! = Warning, ! = Error


! Implicit declaration of function 'NSRectMake'
! No '-initWithContentRect:' method found

(Messages without a matching method signature

! "_NSRectMake", referenced from:

-[TimeWarpAppDelegate applicationDidFinishLaunching:] in TimeWarpAppDelegate.o

Symbol(s) not found
Collect2: ld returned 1 exit status
 
Hmja, da fehlt natürlich noch was...

Code:
self.window = [[NSWindow alloc] initWithContentRect:NSRectMake(0,0, screenRect.size.width, screenRect.size.height)
                                                           styleMask:NSTitledWindowMask
                                                              backing:NSBackingStoreBuffered
                                                                 defer:YES];

Besser? Hab leider grade kein Xcode da zum Testen, ist also jetzt aus dem Kopf.
 
Hey,
hab ich versucht dieses Warning und Fehler bekomm ich noch:

! implicit declaration of function 'NSRectMake'

! incompatible type for argument 1 of 'initWithContentRect:styleMask:backing:defer:'
 
Hmm. Eigentlich ist dieses "initWithContentRect:NSRectMake" völlig redundant. Versuchs mal so:

Code:
self.window = [[NSWindow alloc] initWithContentRect:screenRect
                                    styleMask:NSTitledWindowMask
                                    backing:NSBackingStoreBuffered
                                    defer:YES];
 
  • Gefällt mir
Reaktionen: nolis
… und jedes Mal ein schönes Speicherloch.

Aber es gibt drei gute mögliche Lösungen:

a) Window-Ding erstellen und dem AR geben, dann zur iVar
b) Window-Ding erstellen, der iVar geben und dann -release
c) iVar Zuweisung mit Window-Ding erstellen und autorlease

Viele Grüße
 
..das mit dem Speicherloch verstehe ich nicht ganz little_pixel ... ?

@ Stan Das hat jetzt aber funktioniert... allerdings nicht ganz so wie gewollt. Das Fenster ist zwar groß, jedoch noch nicht komplett vollflächig, also der Titel Rahmen oben ist noch sichtbar, zwar ohne Ihnhalt, also nur ein grauer Balken und das Menü oben ist auch noch sichtbar. Ich wollte eigentlich ein komplettes Fullscreen erzeugen, also sodass weder Balken noch Menü sichtbar ist...
 
habs mal eigenmächtig damit versucht: styleMask:nil
hat sogar geklappt ;-) zwar mit Warning aber es geht Fullscreen auf... *Freu*
 
..das mit dem Speicherloch verstehe ich nicht ganz little_pixel ... ?

Sein Setter wird mit -retain definiert sein, oder?

Du erzeugst eine Fensterinstanz (RetainCount, 1), Du weißt sie Deinem Property zu (RC, 2).
Beim -dealloc wirst Du wohl "[window release];" aufrufen (RC, 1).

… und jetzt oxidiert das Ding weiter rum, da der RC nicht auf 0 fällt.

Hier ein Beispiel:

Code:
    // property "text" ist mit -retain definiert
    
    // 1 > OK
    NSString *string = [[NSString alloc] init];
    self.text = string;
    [string release];
    
    // 2 > OK
    NSString *string = [[[NSString alloc] init] autorelease];
    self.text = string;
    
    // 3 > OK
    self.text = [[[NSString alloc] init] autorelease];
    
    // 4 == 3 > OK
    self.text = [NSString string];
    
    // 5
    NSString *string = [[NSString alloc] init];
    self.text = string;
    // … wenn jetzt nichts mehr mit "string" passiert > Leak
    
    // 6
    self.text = [[NSString alloc] init];
    // … keine Möglichekt den RC zu balancieren > Leak

Bei Deinem Window trifft Fall 6 zu.

Viele Grüße
 
ist das jetzt schlecht oder gut.. ? hab keine Ahnung davon, das Fenster geht allerdings jetzt in Fullscreen auf...
 
Bei den guten Fällen steht "OK". Was steht bei Deinem?

hab keine Ahnung davon
Ist normal am Anfang.
Aber wie man immer zu Hören bekommt: Grundlagen, Buch kaufen, Apple Doku usw. … ist halt nach wie vor der wahre Weg.

das Fenster geht allerdings jetzt in Fullscreen auf...
Sehen kann man immer schnell was, aber ob es richtig umgesetzt ist.

Viele Grüße
 
  • Gefällt mir
Reaktionen: nolis
Das Fullscreen Funktioniert jetzt, hab nun noch ein Webkit Framework hinzugefügt + ein WebView im Interface Builder, Problem dabei ist nur das das WebView statisch bleibt, zwar kann ich im Interface Builder es auf links unten 0 0 setzen (was im Fullscreen Mode dann auch im linken unteren ECK sitzt) jedoch Höhe und Breite nur in Pixel angeben und nicht in %, quasi 100% höhe, 100% breite... das sollte natürlich auch Fullscreen erscheinen, also wie ein Fullscreen Browser, jedoch ohne Adressleiste oder Buttons.
 
Zurück
Oben Unten