2017-11-24 3 views
-3

gestartet, um mein Spiel auf verschiedenen Geräten zu testen. Jedes Gerät funktioniert gut außer iPhone 8 Plus. Auf jedem anderen Gerät und dem Simulator (auch simuliert iPhone 8 Plus) ist die Schaltfläche sichtbar, aber auf iPhone 8 Plus ist es nicht. Ich habe keine Ahnung, warum das passiert.Button ist nicht sichtbar auf iPhone 8 Plus

1. Bild zeigt Simulator 8 Plus Bildschirm, 2. Bild zeigt Gerät Bildschirm.

Hier ist der Code:

proceedButton = [[SelectionButton alloc] initWithFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width/2.0 - 60.00, [[ScreenSize sharedSize] yValue] + 10.0 + [[ScreenSize sharedSize] gameFieldSize], 120.0, [[ScreenSize sharedSize] opButtonSize]) andText:NSLocalizedString(@"DONEKey", @"Done")]; 
[proceedButton addTarget:self action:@selector(createPlayer) forControlEvents:UIControlEventTouchUpInside]; 
[proceedButton addTarget:self action:@selector(changePathColor:) forControlEvents:UIControlEventTouchDown]; 
[self.view addSubview:proceedButton]; 

On Simulator

On device

+0

Warum Sie nicht mit Auto-Layout arbeiten? – LinusGeffarth

+0

Ich habe das Projekt vor fast 2 Jahren begonnen und habe es dann nicht benutzt. Jetzt habe ich 13K Codezeilen. Ich denke nicht, dass es eine gute Idee ist, das zu ändern. Du denkst das ist der Grund? Aber es funktioniert auf Simulator. – Palindrome

+1

haben Sie die Rahmenwerte sowohl im Simulator als auch im realen Gerät gedruckt? Ich denke, dass Sie Frame-Konsole innerhalb Ihrer Frage hinzufügen müssen. – Rivendell

Antwort

0

Dank V12, der mich in die richtige Richtung wies ich den Grund dieser Angelegenheit gefunden.

Das Problem in diesem war

CGSize screenSize = [[UIScreen mainScreen] bounds].size; 

und

CGSize screenSize = [[UIScreen mainScreen] nativeBounds].size; 

sind die zwei verschiedene Dinge.

Zuerst habe ich nicht verstanden, warum es am Simulator funktionierte und nicht am realen Gerät arbeitete. Aber als ich Frame-Werte für das Gerät und Simulator ausgedruckt habe, erkannte ich, dass der Wert für Simulator den Werten von iPhones 6,7,8 entsprach und der Wert für echtes iPhone 8 Plus gleich 2201 war. So bekam ich immer falsche Ergebnisse.

This link helped a lot, especially some of the comments

Verwandte Themen