2015-10-31 2 views
10

Questa potrebbe essere una domanda semplice ma poiché sono un principiante, è meglio chiedere.Cosa usare invece di UIScreen.mainScreen(). ApplicationFrame per swift in ios 9.1?

Come dice il titolo, cosa dovrei usare al posto di UIScreen.mainScreen().applicationFrame poiché è deprecato in 9.0.

Se possibile, sarebbe bello se puoi fornirmi un campione o un esempio, poiché trovo difficile il documento di mele.

Attualmente utilizzo il seguente codice ma desidero cambiarlo alla nuova versione. Mi farebbe piacere avere tue notizie!

let sizeRect = UIScreen.mainScreen().applicationFrame 
    let posX = arc4random_uniform(UInt32(sizeRect.size.width)) 
    let posY = arc4random_uniform(UInt32(sizeRect.size.height)) 
    Enemy.position = CGPoint(x: CGFloat(posX), y: CGFloat(posY)) 
+1

è possibile utilizzare UIScreen.mainScreen(). Bounds.size. – BHUMICA

risposta

13

Usa

let rect1 = UIScreen.mainScreen().bounds // Returns CGRect 
let rect2 = UIScreen.mainScreen().bounds.size // Returns CGSize 
3

Per:

let width = UIScreen.mainScreen().bounds.width 

e per:

let height = UIScreen.mainScreen().bounds.height 
5

So che UIScreen.mainScreen().bounds è l'alternativa consigliata; tuttavia, non è l'equivalente esatto di UIScreen.mainScreen().applicationFrame, in particolare quando l'applicazione NON occupa l'intero schermo, cosa che accade con la visualizzazione divisa e la funzione di scorrimento su determinati iPad.

In tal caso, questa è una buona alternativa: UIApplication.sharedApplication.keyWindow.frame. (Ovviamente keyWindow deve essere disponibile, alias, hai invocato makeKeyAndVisible)

+0

Questa è LA risposta. UIScreen.main.bounds fa ** non ** funziona in determinate situazioni (ad esempio quando sei in una telefonata). – ChrisRockGM

1

A partire da swift 3 devi usarlo in questo modo ora.

let SCREEN_WIDTH = UIScreen.main.bounds.size.width 
let SCREEN_HEIGHT = UIScreen.main.bounds.size.height