2014-09-02 19 views
10

Próbowałem [[UIScreen mainScreen] bounds], aby uzyskać rozmiar ekranu dla iPhone'a z możliwością zmiany rozmiaru na symulatorze Xcode 6. Ale nie bierze pod uwagę nowej szerokości ekranu i wysokości ekranu, które mu przypisuję.Pobierz rozmiar ekranu na iOS 8

Czy istnieje lepszy sposób na uzyskanie rozmiaru ekranu? Nawet jeśli ustawić rozmiar ekranu do 320x800[[UIScreen mainScreen] bounds] zwraca mi (CGRect) $0 = origin=(x=0, y=0) size=(width=768, height=1024)

enter image description here

+1

W kontrolerze widoku mają próbowałeś self.view.bounds? – WMios

Odpowiedz

16

Wykonaj następujące

CGRect Rect = [[UIScreen mainScreen] Granice];

Tak więc zachowuje granice w rect. spróbuj raz.

+1

Musisz usunąć *, aby działało. W przeciwnym razie zgłasza błąd. –

+0

To nie działa z użyciem iOS 8.4.1 na iPhone'zie 5. Wykrywa rozmiar ekranu iPhone'a 4/4S – user2924482

1

To dostaje się w iOS8 i iOS9. Nie jestem pewien co 7 nie testowałem:

var screenWidth: CGFloat { 
    if UIInterfaceOrientationIsPortrait(screenOrientation) { 
     return UIScreen.mainScreen().bounds.size.width 
    } else { 
     return UIScreen.mainScreen().bounds.size.height 
    } 
} 
var screenHeight: CGFloat { 
    if UIInterfaceOrientationIsPortrait(screenOrientation) { 
     return UIScreen.mainScreen().bounds.size.height 
    } else { 
     return UIScreen.mainScreen().bounds.size.width 
    } 
} 
var screenOrientation: UIInterfaceOrientation { 
    return UIApplication.sharedApplication().statusBarOrientation 
} 

Są one ujęte jako standardową funkcję w:

https://github.com/goktugyil/EZSwiftExtensions

2

w Swift 4.0, 3,0

let screenRect:CGRect = UIScreen.main.bounds