Câu trả lời:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Điều đó sẽ cung cấp cho bạn toàn bộ độ phân giải của màn hình theo điểm, vì vậy, điển hình nhất sẽ là 320x480 cho iPhone. Mặc dù iPhone4 có kích thước màn hình lớn hơn nhiều nhưng iOS vẫn trả lại 320x480 thay vì 640x960. Điều này chủ yếu là do các ứng dụng cũ phá vỡ.
CGFloat screenScale = [[UIScreen mainScreen] scale];
Điều này sẽ cung cấp cho bạn quy mô của màn hình. Đối với tất cả các thiết bị không có Màn hình Retina, điều này sẽ trả về 1.0f, trong khi các thiết bị Hiển thị Retina sẽ cho 2.0f và iPhone 6 Plus (Retina HD) sẽ cho 3.0f.
Bây giờ nếu bạn muốn lấy chiều rộng và chiều cao pixel của màn hình thiết bị iOS, bạn chỉ cần thực hiện một điều đơn giản.
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
Bằng cách nhân với tỷ lệ của màn hình, bạn sẽ có được độ phân giải pixel thực tế.
Đọc tốt về sự khác biệt giữa các điểm và pixel trong iOS có thể được đọc ở đây .
EDIT: (Phiên bản cho Swift)
let screenBounds = UIScreen.main.bounds
let screenScale = UIScreen.main.scale
let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)
Lớp UIScreen cho phép bạn tìm độ phân giải màn hình theo Điểm và Điểm.
Độ phân giải màn hình được đo bằng Điểm hoặc Điểm ảnh. Không bao giờ nên nhầm lẫn với kích thước màn hình. Một kích thước màn hình nhỏ hơn có thể có độ phân giải cao hơn.
Kích thước hình chữ nhật của UIScreen là 'bound. Thong'
Kích thước hình chữ nhật trả về 'localBound. Thong' của UIScreen bằng Pixels. Giá trị này được phát hiện là PPI (Điểm trên mỗi inch). Hiển thị độ sắc nét & rõ nét của Hình ảnh trên thiết bị.
Bạn có thể sử dụng lớp UIScreen để phát hiện tất cả các giá trị này.
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)")
Bảng điều khiển
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
Mục tiêu
// 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
Sử dụng nó trong App Delegate: Tôi đang sử dụng bảng phân cảnh
- (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;
}
Xem UIScreen tham khảo: 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");
}
NSLog(@"%f",[[UIScreen mainScreen] scale]);
Sử dụng mã này, nó sẽ giúp nhận được bất kỳ loại độ phân giải màn hình của thiết bị
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width