Jak uzyskać wymiary ekranu w iOS?
Problem z opublikowanym kodem polega na tym, że liczysz na rozmiar widoku odpowiadający rozmiarowi ekranu, a jak już zauważyłeś, nie zawsze tak jest. Jeśli potrzebujesz rozmiaru ekranu, powinieneś spojrzeć na obiekt reprezentujący sam ekran, w następujący sposób:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
Aktualizacja podzielonego widoku: W komentarzach Dmitry zapytał:
Jak mogę uzyskać rozmiar ekranu w podzielonym widoku?
Podany powyżej kod zgłasza rozmiar ekranu, nawet w trybie podzielonego ekranu. Gdy używasz trybu podzielonego ekranu, zmienia się okno aplikacji. Jeśli powyższy kod nie zawiera oczekiwanych informacji, to podobnie jak PO, patrzysz na niewłaściwy obiekt. W takim przypadku powinieneś jednak spojrzeć na okno zamiast na ekran:
CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;
Szybki 4.2
let screenRect = UIScreen.main.bounds
let screenWidth = screenRect.size.width
let screenHeight = screenRect.size.height
// split screen
let windowRect = self.view.window?.frame
let windowWidth = windowRect?.size.width
let windowHeight = windowRect?.size.height
[UIScreen scale]
.CGRectGetWidth()
iCGRectGetHeight()
zamiast bezpośredniego dostępu dosize
pola w prostokącie. Nie sądzę, aby kiedykolwiek pojawił się problem z prostokątem ekranu, ale przypuszczam, że należy o tym pamiętać.