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 № 1Czy 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;
}