/ / UIScreen.mainScreen ma ten sam rozmiar na wszystkich urządzeniach [duplikat] - iOS, iPhone, uiscreen

UIScreen.mainScreen ma ten sam rozmiar na wszystkich urządzeniach [duplikat] - iOS, iPhone, Uiscreen

Mam dziwny problem, który nagle się pojawił.Problem polega na tym, że moja aplikacja wydaje się skalować moje widoki, na przykład podczas zmiany urządzenia z iPhone'a 6 na iPhone'a 6 Plus. Więc jeśli mam tytuł z pewnym rozmiarem czcionki, ten sam tytuł, który zajmuje taką samą ilość miejsca na ekranie iPhone'a 6 Plus, kiedy chcę tylko, aby rozmiar był taki sam i po prostu wydawał się mniejszy na większym urządzeniu. Czy ktoś wie, jak to się stało i jak to naprawić?

Biegając zauważyłem:

NSLog(@"%f", [UIScreen mainScreen].bounds.size.width);
NSLog(@"%f", [UIScreen mainScreen].bounds.size.height);

Że generuje ten sam wynik na wszystkich urządzeniach symulujących:

320
568

Spodziewałbym się, że na większych urządzeniach będzie inaczej. Czy to ma z tym coś wspólnego?

Odpowiedzi:

1 dla odpowiedzi № 1

Czy dodałeś obrazy startowe dla iPhone'a 6 i 6?Plus urządzenia? W przeciwnym razie będzie działać skalowany w tych rozdzielczościach (a wywołanie [[UIScreen mainScreen] bounds] zwróci granice tak, jakby działało na 4-calowym urządzeniu).


0 dla odpowiedzi nr 2

Po prostu dodaj nowe domyślne zdjęcie png o wysokości 1136.

[[UIScreen mainScreen] granice] .size

zwróci nową wysokość 4-calowego ekranu.


0 dla odpowiedzi № 3

To nie jest błąd. Możesz przejrzeć sesję 214 z WWDC 2014, aby uzyskać więcej informacji: „Zobacz postępy w kontrolerze w iOS 8 "

Cytat z prezentacji:

  • UIScreen jest teraz zorientowany na interfejs:
  • [Granice UIScreen] są teraz zorientowane na interfejs
  • [UIScreen applicationFrame] jest teraz zorientowana na interfejs
  • Powiadomienia ramek na pasku stanu są zorientowane na interfejs
  • Powiadomienia dotyczące ramek klawiatury są zorientowane na interfejs

0 dla odpowiedzi nr 4

Nadal możesz pracować, aby uzyskać różne wartości. Oto kod:

  + (CGRect)screenBoundsFixedToPortraitOrientation {
UIScreen *screen = [UIScreen mainScreen];

if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) {
return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace];
}
return screen.bounds;
}