W aplikacji na iPhone'a, podczas uruchamiania aplikacji na urządzeniu Jak wykrywać rozdzielczość ekranu urządzenia, na którym działa aplikacja?w aplikacji na iPhone'a Jak wykryć rozdzielczość ekranu urządzenia
Odpowiedz
CGRect screenBounds = [[UIScreen mainScreen] bounds];
To daje rozdzielczość całego ekranu w punktach, więc to najczęściej być 320x480 dla iPhone. Mimo że iPhone4 ma znacznie większy rozmiar ekranu, iOS nadal daje 320 x 480 zamiast 640 x 960. Jest to spowodowane głównie zerwaniem starszych aplikacji.
CGFloat screenScale = [[UIScreen mainScreen] scale];
Daje to skalę ekranu. Dla wszystkich urządzeń, które nie mają wyświetlaczy Retina, to zwróci 1,0f, podczas gdy urządzenia Retina Display dadzą 2,0f, a iPhone 6 Plus (Retina HD) da 3,0f.
Teraz, jeśli chcesz uzyskać szerokość ekranu w pikselach o wysokości &, wystarczy wykonać jedną prostą czynność.
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
Pomnożenie przez skalę ekranu daje rzeczywistą rozdzielczość pikseli.
Dobry odczyt różnicy między punktami a pikselami w systemie iOS można przeczytać here.
EDIT: (wersja dla Swift)
let screenBounds = UIScreen.main.bounds
let screenScale = UIScreen.main.scale
let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)
Zobacz UIScreen referencyjny: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScreen_Class/Reference/UIScreen.html
if([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")])
{
if ([[UIScreen mainScreen] scale] < 1.1)
NSLog(@"Standard Resolution Device");
if ([[UIScreen mainScreen] scale] > 1.9)
NSLog(@"High Resolution Device");
}
Dzięki za odpowiedzi, jeśli kładę go w NSLog (@ "% d", [[UIScreen mainScreen] skala]); daje 0 ...... i NSLog (@ "% @", [[UIScreen mainScreen] skala]); daje nil Pls dać mi znać, jak uzyskać rozdzielczość ekranu lub jak sprawdzić, czy daje poprawną rozdzielczość podczas uruchamiania go na symulatorze – ios
wypróbuj 'NSLog (@"% f ", [[UIScreen mainScreen] skala]);' – vikingosegundo
@ vikingosegundo, Dzięki – ios
Użyj go w App Delegata: Używam storyboard
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;
//----------------HERE WE SETUP FOR IPHONE 4/4s/iPod----------------------
if(iOSDeviceScreenSize.height == 480){
UIStoryboard *iPhone35Storyboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];
// Instantiate the initial view controller object from the storyboard
UIViewController *initialViewController = [iPhone35Storyboard instantiateInitialViewController];
// Instantiate a UIWindow object and initialize it with the screen size of the iOS device
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Set the initial view controller to be the root view controller of the window object
self.window.rootViewController = initialViewController;
// Set the window object to be the key window and show it
[self.window makeKeyAndVisible];
[email protected]"4";
NSLog(@"iPhone 4: %f", iOSDeviceScreenSize.height);
}
//----------------HERE WE SETUP FOR IPHONE 5----------------------
if(iOSDeviceScreenSize.height == 568){
// Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iPhone5" bundle:nil];
// Instantiate the initial view controller object from the storyboard
UIViewController *initialViewController = [iPhone4Storyboard instantiateInitialViewController];
// Instantiate a UIWindow object and initialize it with the screen size of the iOS device
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Set the initial view controller to be the root view controller of the window object
self.window.rootViewController = initialViewController;
// Set the window object to be the key window and show it
[self.window makeKeyAndVisible];
NSLog(@"iPhone 5: %f", iOSDeviceScreenSize.height);
[email protected]"5";
}
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// NSLog(@"wqweqe");
storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
}
return YES;
}
iPhone 6 (s) (+) nie będzie działać – vikingosegundo
Dla iOS 8 możemy po prostu użyć tego [UIScreen mainScreen].nativeBounds
, tak:
- (NSInteger)resolutionX
{
return CGRectGetWidth([UIScreen mainScreen].nativeBounds);
}
- (NSInteger)resolutionY
{
return CGRectGetHeight([UIScreen mainScreen].nativeBounds);
}
Klasa UIScreen umożliwia znalezienie ponownego ekranu rozwiązanie w punktach i pikselach.
Rozdzielczości ekranu mierzy się w punktach lub pikselach. Nigdy nie należy go mylić z rozmiarem ekranu. Mniejszy rozmiar ekranu może mieć wyższą rozdzielczość.
UIScreen jest „bounds.width” powrócić prostokątny rozmiar w punktach
UIScreen jest „nativeBounds.width” rozmiar powrót prostokątny wartości Pixels.This jest wykrywany jako PPI (punkt na cal). Wyświetla wyrazistość obrazu na urządzeniu.
Możesz użyć klasy UIScreen, aby wykryć wszystkie te wartości.
Swift3
// Normal Screen Bounds - Detect Screen size in Points.
let width = UIScreen.main.bounds.width
let height = UIScreen.main.bounds.height
print("\n width:\(width) \n height:\(height)")
// Native Bounds - Detect Screen size in Pixels.
let nWidth = UIScreen.main.nativeBounds.width
let nHeight = UIScreen.main.nativeBounds.height
print("\n Native Width:\(nWidth) \n Native Height:\(nHeight)")
konsoli
width:736.0
height:414.0
Native Width:1080.0
Native Height:1920.0
Swift 2.x
//Normal Bounds - Detect Screen size in Points.
let width = UIScreen.mainScreen.bounds.width
let height = UIScreen.mainScreen.bounds.height
// Native Bounds - Detect Screen size in Pixels.
let nWidth = UIScreen.mainScreen.nativeBounds.width
let nHeight = UIScreen.mainScreen.nativeBounds.height
ObjectiveC
// Normal Bounds - Detect Screen size in Points.
CGFloat *width = [UIScreen mainScreen].bounds.size.width;
CGFloat *height = [UIScreen mainScreen].bounds.size.height;
// Native Bounds - Detect Screen size in Pixels.
CGFloat *width = [UIScreen mainScreen].nativeBounds.size.width
CGFloat *height = [UIScreen mainScreen].nativeBounds.size.width
użyć tego kodu to pomoże na uzyskanie dowolnego rodzaju rozdzielczości ekranu urządzenia
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width
- 1. Rozdzielczość ekranu na stronie mobilnej
- 2. Jak uzyskać rozdzielczość ekranu? Dla aplikacji WinRT?
- 3. Jak uzyskać rozdzielczość ekranu urządzenia z systemem Android ..?
- 4. Programowanie Androida - rozdzielczość ekranu
- 5. Rozdzielczość ekranu Silverlight
- 6. Rozdzielczość ekranu o rozmiarze urządzenia przenośnego (szerokość, wysokość)
- 7. Spoofing/fałszywa rozdzielczość ekranu?
- 8. Jak zmienić rozmiar jframe na rozdzielczość ekranu w netbeans?
- 9. Uzyskaj natywną rozdzielczość ekranu
- 10. Symulowanie ekranu urządzenia na stronie internetowej
- 11. Jak wykryć rotację ekranu?
- 12. Jak odzyskać rozdzielczość ekranu z aplikacji C# winform?
- 13. Jak uzyskać rozdzielczość ekranu w C++?
- 14. Jak mogę uzyskać rozdzielczość ekranu w R
- 15. Jak wykryć obecność określonego urządzenia
- 16. Android miejsca: Ustaw rozdzielczość ekranu
- 17. Pobierz programowo rozdzielczość ekranu w OS X
- 18. XNA - Uzyskaj rozdzielczość ekranu bieżącego
- 19. jak uzyskać rozdzielczość ekranu użytkownika z PHP
- 20. Cel C - jak uzyskać aktualną rozdzielczość ekranu?
- 21. Jak wykryć obsługę dotykową urządzenia w JavaScript?
- 22. Wykonywanie zrzutów ekranu bieżącego ekranu urządzenia
- 23. Jak mogę wykryć dpi na iPadzie mini?
- 24. Jak uzyskać rozdzielczość ekranu w systemie Android Honeycomb?
- 25. Uzyskaj natywną rozdzielczość ekranu za pomocą jQuery
- 26. Jak przekonwertować ramkę na podstawie rozmiaru ekranu urządzenia?
- 27. Jak zdobyć iOS wysokość ekranu urządzenia i szerokość
- 28. C#: Jak wykryć, czy działa czytnik ekranu?
- 29. Galaxy Tab 10.1 Rozdzielczość ekranu (- pasek menu)
- 30. Python: Jak wykryć nazwa urządzenia/ID na szeregowego COM
Tyle tylko, że nie jest to "rozdzielczość rzeczywistego piksela" w przypadku iPhone'a 6 Plus. Jest to rozdzielczość wszystko * jest * renderowane na (z wyjątkiem OpenGL) w kodzie, ze skalą 3x, ale potem * to * jest próbkowane wewnętrznie do naturalnej rozdzielczości ekranu 1080 x 1920. Jedno z wielu dobrych objaśnień na [link] (http://www.paintcodeapp.com/news/iphone-6-screens-dystystified) – RobP
Niestety, nie da to "prawdziwych" wymiarów elementów na ekranie, ponieważ pojęcia "punktów" i "skali" Apple "są jedynie przybliżeniem. (Zobacz specyfikacje na iPhone'a i iPada vs iPada mini.) Przypuszczalnie w celu zmniejszenia liczby różnych kombinacji, które istnieją. Myślę, że iPhone 6 Plus jest szczególnie daleko. – ToolmakerSteve
Właściwie 6+ nie za daleko: wysokość 736 pkt/160 (pt/in) = 4,60 "wysokość logiczna, rzeczywista wysokość ekranu to 4,79"; 5% błąd. iPad jest znacznie dalej: wysokość 1024 pkt/160 (pt/in) = 6,40 "wysokość logiczna, rzeczywista wysokość ekranu to 7,76"; 20% błąd. iPad * mini * jest OK; dopasowuje oryginalną gęstość iPhone'a. W większości przypadków oznacza to, że należy przetestować oprogramowanie iPada na iPadzie * mini * (aby się upewnić, że jest ono użyteczne), a następnie zignorować fakt, że większość iPadów powiększa obraz o 20% (w porównaniu do iPhone'a lub iPada mini). – ToolmakerSteve