[ios] iPhone App에서 기기의 화면 해상도를 감지하는 방법

iPhone App에서 기기에서 앱을 실행하는 동안 앱이 실행되는 기기의 화면 해상도를 감지하는 방법은 무엇입니까?



답변

CGRect screenBounds = [[UIScreen mainScreen] bounds];

그러면 전체 화면의 해상도가 포인트로 표시되므로 iPhone의 경우 일반적으로 320×480입니다. iPhone4의 화면 크기는 훨씬 크지 만 iOS는 여전히 640×960 대신 320×480을 반환합니다. 이것은 대부분 오래된 응용 프로그램 중단으로 인한 것입니다.

CGFloat screenScale = [[UIScreen mainScreen] scale];

이것은 화면의 크기를 줄 것입니다. Retina 디스플레이가없는 모든 장치의 경우 1.0f를 반환하지만 Retina 디스플레이 장치는 2.0f를 제공하고 iPhone 6 Plus (Retina HD)는 3.0f를 제공합니다.

이제 iOS 기기 화면의 픽셀 너비 및 높이를 얻으려면 간단한 작업을 수행하면됩니다.

CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);

화면의 배율을 곱하면 실제 픽셀 해상도를 얻을 수 있습니다.

iOS의 포인트와 픽셀의 차이에 대한 좋은 읽을 거리는 여기에서 읽을 수 있습니다 .

편집 : (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의 ‘bounds.width’는 사각형 크기를 포인트로 반환합니다. 여기에 이미지 설명을 입력하십시오

UIScreen의 ‘nativeBounds.width’는 픽셀 단위의 사각형 크기를 반환합니다.이 값은 PPI (Point per inch)로 감지됩니다. 장치에서 이미지의 선명도와 선명도를 보여줍니다.
여기에 이미지 설명을 입력하십시오

UIScreen 클래스를 사용하여 이러한 모든 값을 감지 할 수 있습니다.

스위프트 3

// 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.0

스위프트 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

목표 C

// 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


답변

App Delegate에서 사용 : 스토리 보드를 사용하고 있습니다.

- (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


답변