6 ответов:
CGRect screenBounds = [[UIScreen mainScreen] bounds];это даст вам разрешение всего экрана в точках, поэтому обычно это будет 320x480 для iPhone. Несмотря на то, что iPhone4 имеет гораздо больший размер экрана, iOS по-прежнему возвращает 320x480 вместо 640x960. Это в основном из-за старых приложений взлома.
CGFloat screenScale = [[UIScreen mainScreen] scale];это даст вам масштаб экрана. Для всех устройств, которые не имеют дисплеев Retina, это вернет 1.0 f, в то время как устройства отображения Retina дадут 2.0 f и iPhone 6 Плюс (Retina HD) даст 3.0 f.
теперь, если вы хотите получить ширину и высоту пикселя экрана устройства iOS, вам просто нужно сделать одну простую вещь.
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);путем умножения на масштаб экрана вы получаете фактическое разрешение пикселей.
хорошее чтение на разнице между точками и пикселями в iOS можно прочитать здесь.
EDIT: (версия для Swift)
let screenBounds = UIScreen.main.bounds let screenScale = UIScreen.main.scale let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)
класс UIScreen позволяет найти разрешение экрана в точках и пикселях.
разрешение экрана измеряется в точках или пикселях. Его не следует путать с размером экрана. Меньший размер экрана может иметь более высокое разрешение.
границы UIScreen.ширина ' возвращает прямоугольный размер в пунктах
UIScreen по.ширина ' возвращает прямоугольный размер в пикселях.Это значение определяется как PPI (точка на дюйм ). Показывает резкость и четкость изображения на устройстве.![]()
вы можете использовать класс UIScreen для обнаружения всех этих значений.
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)")консоль
width:736.0 height:414.0 Native Width:1080.0 Native Height:1920.0Swift 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.heightObjectiveC
// 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
используйте его в делегате приложения: я использую раскадровку
- (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]; iphone=@"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); iphone=@"5"; } } else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // NSLog(@"wqweqe"); storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil]; } return YES; }
для iOS 8, мы можем просто использовать
[UIScreen mainScreen].nativeBounds, вот так:- (NSInteger)resolutionX { return CGRectGetWidth([UIScreen mainScreen].nativeBounds); } - (NSInteger)resolutionY { return CGRectGetHeight([UIScreen mainScreen].nativeBounds); }
см. ссылку UIScreen: 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"); }
используйте этот код, это поможет для получения любого типа разрешения экрана устройства
[[UIScreen mainScreen] bounds].size.height [[UIScreen mainScreen] bounds].size.width


Comments