2016-08-07 34 views
4

Ich lerne, wie man eine iOS App ohne Interface Builder (d. H. Storyboards, XIBs, etc.) erstellt. Unten ist die grundlegende App-Delegat-Klasse, mit der ich arbeite. Das Problem ist, dass der UIWindow bei der Anzeige nicht den gesamten Bildschirm des Geräts ausnutzt (siehe angehängter Screenshot). Dies geschieht bei allen Geräten und Simulatoren, mit denen ich teste. Warum wird nicht der Vollbildmodus verwendet?Manuell erstellte UIWindow ist falsch Größe

import UIKit 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 
    lazy var window: UIWindow? = { 
    debugPrint("AppDelegate: Creating Window") 

    let screen: UIScreen = UIScreen.mainScreen() 
    let window: UIWindow = UIWindow.init(frame: screen.bounds) 

    window.backgroundColor = UIColor.whiteColor() 

    return window 
    }() 

    lazy var rootViewController: ShapesViewController = { 
    debugPrint("AppDelegate: Creating Root View Controller") 

    let rootViewController = ShapesViewController.init(nibName: nil, bundle: nil) 

    return rootViewController 
    }() 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 
    debugPrint("AppDelegate: applicationWillEnterForeground") 

    window?.rootViewController = rootViewController 
    window?.makeKeyAndVisible() 

    return true 
    } 
} 

Why doesn't the window use the whole screen?

Antwort

1

Diese immer funktioniert für mich (ich allerdings keinen eindeutigen Unterschied sehen). Könnten Sie auch Ihren ShapesViewController-Code teilen?

var window: UIWindow? 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    window?.rootViewController = ViewController() 
    window?.makeKeyAndVisible() 
    return true 
} 
+0

Die ShapesViewController ist leer, ich habe sogar den Root-View-Controller in ein einfaches altes UIViewController-Objekt geändert, und ich habe das Gleiche bekommen: Ich habe den Beispielcode nur ausprobiert, um irgendwelche Seltsamkeit auszuschließen, und es sieht genauso aus: – macinjosh

+1

@macinjosh Vielleicht sollten Sie den Beispielcode in einem neuen einfachen Projekt ausprobieren. Haben Sie auch die main.storyboard-Datei gelöscht? – dvdblk

6

Das Problem stellte sich heraus, dass ich kein Startbild oder Storyboard hatte. Aus irgendeinem Grunde, ohne dass dies der App standardmäßig auf die 3,5" Größe Kredit auf diesen Kommentar:. A launch storyboard or xib must be provided unless the app requires full screen

+1

Um das Buch ["iOS 9 Programmiergrundlagen mit Swift"] (http://shop.oreilly.com/product/0636920044345.do) von Matt Neuberg (erstaunliche Tech-Schriftsteller!): Das Vorhandensein eines 'Launch Screen Interface Name der Dateibasis in Ihrem * Info.plist * teilt dem System mit, dass Ihre App nativ auf neueren Gerätetypen wie iPhone 6 und iPhone 6 Plus ausgeführt wird. Ohne sie wird Ihre App vergrößert angezeigt ... Sie werden nicht alle Pixel erhalten, zu denen Sie berechtigt sind ... –

0

Ich weiß, klingt albern, aber ... für ein neues Projekt, was macinjosh sagen Arbeiten Für ein Projekt von mir in. Xcode 8 und swift 3, tat es nicht (wahrscheinlich, weil ich den Startbildschirm gelöscht und neu erstellt werden musste.) Einfach neues Projekt erstellt, und folgen Sie, was macinjosh sagte. Dann migrieren Sie alle Ihre Dateien zurück.