programing

아이폰 5 화면 해상도를 위한 앱을 개발하거나 마이그레이션하는 방법은 무엇입니까?

telecom 2023. 5. 10. 20:15
반응형

아이폰 5 화면 해상도를 위한 앱을 개발하거나 마이그레이션하는 방법은 무엇입니까?

새로운 아이폰 5 디스플레이는 새로운 가로 세로 비율과 새로운 해상도(640 x 1136 픽셀)를 가지고 있습니다.

새 응용프로그램을 개발하거나 기존 응용프로그램을 새 화면 크기로 전환하려면 무엇이 필요합니까?

오래된 디스플레이와 새로운 와이드 스크린 가로 세로 비율 모두에서 응용 프로그램을 "범용"으로 만들기 위해 우리가 염두에 두어야 할 사항은 무엇입니까?

  1. 최신 버전의 Xcode를 다운로드하여 설치합니다.
  2. 대상 설정의 일반 탭에서 앱의 실행 화면 파일을 설정합니다.이렇게 하면 iOS 9에서 iPad 분할 보기 크기를 포함하여 모든 화면의 전체 크기를 사용할 수 있습니다.
  3. 마스크 크기 자동 조정을 올바르게 설정했거나 자동 레이아웃을 사용했다면 모든 것이 마법처럼 작동할 것이므로 앱을 테스트하고 다른 작업을 수행하지 마십시오.
  4. 그렇지 않은 경우 자동 레이아웃을 사용하여 보기 레이아웃을 조정합니다.
  5. 큰 할 , 더 큰 화 면 을 위 특 해 해 일 있 할 다 이 면 높 확 야 해 인 보 를 것 입 니 럼 다 처 할 이 당 은 신 야 히 별 ▁of ▁height ▁specific ▁if ▁like 니 ▁you 다 ▁then 보 ▁check ▁the ▁you ▁to ▁have ▁it ▁screens ▁for 입 ▁there ▁larger ▁looks ▁have ally , ▁something ▁is 더 ▁do 럼 ▁to 것[[UIScreen mainScreen] bounds]그것을 위한 특별한 API가 없는 것처럼 보이기 때문입니다.iOS 8부터는 화면 크기를 수직 및 수평으로 일반 또는 소형으로 추상화하는 크기 클래스도 있으며 UI를 조정하는 권장 방법입니다.

iPhone 4S 또는 이전 버전용으로 구축된 앱이 있으면 iPhone 5에서 레터박스 방식으로 실행됩니다.

앱을 새로운 높은 화면에 적응시키려면 먼저 실행 이미지를 Default-568h@2x.pn g으로 변경해야 합니다.크기는 1136x640(HxW)이어야 합니다.네,화면 크기에 기본 이미지를 설정하는 것이 아이폰 5의 화면 전체를 앱이 가져갈 수 있도록 하는 열쇠입니다.

이름 지정 규칙은 기본 이미지에만 적용됩니다.다른 이미지의 이름을 "Image-568h@2x.pn g"로 지정해도 "Image@2x.pn g" 대신 로드되지 않습니다.화면 크기에 따라 다른 이미지를 로드해야 하는 경우 프로그래밍 방식으로 로드해야 합니다.)

당신이 운이 좋다면, 그것은 아마도...하지만 아마 단계는 더 밟아야 할 겁니다

  • Xib/View는 자동 레이아웃을 사용하여 크기를 조정해야 합니다.
  • 스프링과 스트럿을 사용하여 뷰 크기를 조정합니다.
  • 앱에 적합하지 않은 경우 특정 화면 크기에 맞게 xib/스토리보드를 설계하고 다른 화면 크기에 맞게 프로그래밍 방식으로 위치를 변경합니다.

극단적인 경우(위의 어느 것도 충분하지 않은 경우)에는 두 개의 Xib를 설계하고 뷰 컨트롤러에 적절한 Xib를 로드합니다.

화면 크기 감지하기

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}

정말로 필요한 유일한 일은 앱 리소스에 "Default-568h@2x.pn g"라는 이름의 실행 이미지를 추가하는 것이며, 일반적인 경우(운이 좋으면) 앱이 올바르게 작동합니다.

앱에서 터치 이벤트를 처리하지 않는 경우 키 창의 크기가 올바른지 확인합니다.해결 방법은 적절한 프레임을 설정하는 것입니다.

[window setFrame:[[UIScreen mainScreen] bounds]]

iOS 6으로 마이그레이션할 때 화면 크기와 관련되지 않은 다른 문제가 있습니다. 자세한 내용은 iOS 6.0 릴리스 정보를 참조하십시오.

때로는 (스토리보드 이전 앱의 경우) 레이아웃이 충분히 다를 경우, 다른 그래픽이 필요할 경우 자동 크기 조정 마스크를 사용하는 것이 작동하지 않으므로, 해당 보기 컨트롤러에서 장치에 따라 다른 xib를 지정할 가치가 있습니다( 질문 참조 - 아이폰 5를 처리하기 위해 코드를 수정해야 합니다).

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

이것은 이전 iOS 버전을 대상으로 하는 앱에 유용합니다.

여기에서 좋은 튜토리얼을 찾을 수 있습니다(MonoTouch용이지만, Non-MonoTouch 프로젝트용 정보도 사용할 수 있습니다).
http://redth.info//http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today/

  1. "Default-568h@2x.pn g" 이름을 사용하여 스플래시/기본 화면에 대한 새 이미지를 만듭니다.

  2. iOS Simulator에서 Hardware -> Device 메뉴로 이동하여 "iPhone(Retina 4인치)"를 선택합니다.

  3. 다른 이미지(예: 배경 이미지) 생성

  4. iPhone 5를 검색하여 새 이미지 로드:

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}

XIB를 통해 iPhone5 및 iPhone4를 쉽게 마이그레이션할 수 있습니다.

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}

저는 여기서 이 문제를 해결합니다.이미지에 ~568h@2x 접미사를 추가하고 xib에 ~568h를 추가하기만 하면 됩니다.런타임 검사나 코드 변경이 더 이상 필요하지 않습니다.

저는 새로운 기본 실행 이미지를 추가했고 (다른 SE 답변을 확인하는 과정에서...) 스토리보드가 모두 자동으로 크기가 조정되고 하위 뷰가 표시되는지 확인했지만, 망막 4인치는 여전히 레터박스에 저장되어 있습니다.

그리고 나서 저는 제 인포리스트가 "Launch image"에 대한 줄 항목이 "Default.png"으로 설정되어 있다는 것을 알아차렸고, 그렇게 해서 제가 그것을 제거했고 마법처럼 편지함이 더 이상 나타나지 않았습니다.바라건대, 그것이 내가 견뎌낸 것과 같은 미친 사람을 다른 누군가를 구하길 바랍니다.

모든 경우에 해당되는 것은 아니지만, 특정 프로젝트에서는 NIB 파일의 중복을 피할 수 있었습니다.

어딘가에common.h화면 높이를 기준으로 다음과 같은 정의를 만들 수 있습니다.

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

기본 컨트롤러에서 다음을 수행합니다.

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}

인어constants.h다음 정의문을 추가할 수 있는 파일:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)

앱이 iPhone 5 Retina를 지원할 수 있는지 확인하려면 다음을 사용하십시오. (디스플레이 유형, 4S Retina 등을 반환하는 것이 더 강력할 수 있지만, 아래에 쓰여 있듯이 iPhone이 iOS5 Retina를 YES 또는 NO로 지원하는 경우에만 반환됩니다.)

공통 ".h" 파일에 다음을 추가합니다.

BOOL IS_IPHONE5_RETINA(void);

공통 ".m" 파일에 다음을 추가합니다.

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}

먼저 두 개의 xib를 생성하고 모든 딜러, 메인 클래스를 다음에 연결합니다.xib그리고 나서 당신은 당신의 아래에 언급된 이 조건을 넣을 수 있습니다.appdelegate.m줄을 지어 들어가다

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

당신은 심지어 당신의 요구사항에 따라 프로그램의 어느 곳에서나 그것을 사용할 수 있습니다.ViewController반.가장 중요한 것은 당신이 두 개를 만들었다는 것입니다.xib별도의 파일iphone 4(320*480) and iphone 5(320*568)

싱글톤 클래스에서 다음 방법을 사용해 보십시오.

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }

사용할 수 있습니다.Auto LayoutiPhone 5 화면 해상도를 사용하여 디자인을 만들고 4" 및 3.5" 장치 모두에서 작동하지만 이 경우 레이아웃 관리자에 대한 충분한 지식이 있어야 합니다.

확인 중bounds와 함께568iPhone 5는 세로 모드에서만 실행되지만 회전을 지원하려면 iPhone 5 "체크"도 이 시나리오를 처리해야 합니다.

다음은 방향 상태를 처리하는 매크로입니다.

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

몇 시간 전에 읽은 다른 게시물에서 '선호 모드' 전화를 사용하여 이 아이디어를 생각해내지 못했습니다.

먼저 이 이미지를 보여줍니다.해당 이미지에서 Retina 4 지원에 대한 경고를 표시하므로 이 경고를 클릭하고 추가를 클릭하면 Retina 4 스플래시 화면이 프로젝트에 자동으로 추가됩니다.

여기에 이미지 표시

이 코드를 사용한 후:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }

하드 코딩된 값 없이 모두를 위한 하나의 코드베이스를 가지고 있었기 때문에 어떤 장치에서도 이러한 문제에 직면한 적이 없었습니다.제가 하는 일은 각 장치에 대해 하나의 이미지가 아닌 최대 크기의 이미지를 리소스로 사용하는 것입니다.예를 들어, 저는 레티나 디스플레이용으로 하나를 가지고 있고 모든 장치에서 동일한 뷰가 되도록 애스펙트 핏으로 보여줄 것입니다.예를 들어, 실행 시간에 버튼 프레임을 결정하기 위해 왔습니다.이를 위해 특허 뷰의 % 값을 사용합니다. 예를 들어 너비가 상위 뷰의 절반이 되도록 하려면 상위 뷰의 50%를 선택하고 높이와 중심에 대해서도 동일하게 적용됩니다.

이것으로 저는 xibs도 필요 없습니다.

이 정의를 사용하여 화면 크기를 기준으로 iPhone 5를 사용하는지 여부를 계산할 수 있습니다.

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

그런 다음 간단한 것을 사용합니다.if경고:경고:

    if (IS_IPHONE_5) {

    // What ever changes
    }

Peter, Canappi를 꼭 한번 보세요. 당신이 해야 할 일은 레이아웃을 다음과 같이 지정하는 것입니다.

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

여기서 Canappi는 앱이 실행 중인 장치를 감지하고 다음을 사용하는 올바른 목표-c 코드를 생성합니다.

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

카나피는 텍스트 형태라는 점을 제외하고는 인터페이스 빌더와 스토리보드를 결합한 것처럼 작동합니다.XIB 파일이 이미 있는 경우 이 파일을 변환하여 전체 UI를 처음부터 다시 생성할 필요가 없습니다.

화면 크기를 수동으로 확인하여 현재 장치를 확인할 수 있습니다.

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}

다음 코드를 추가할 수 있습니다.

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

이것은 실제 범용 코드이며, 3가지 스토리보드를 만들 수 있습니다.

프로젝트 유니버설 모드를 설정하고 iPhone5 스토리보드와 iPad 타겟 스토리보드가 있는 iPad 메인 스토리보드로 주요 스토리보드를 설정합니다. 이제 iPhone용 스토리보드 대상을 추가하고 iPhone 4s 이하의 해상도를 수정하여 AppDelegate.m을 구현하십시오.

iPhone4/4s(3/3Gs의 경우 동일) 하나는 iPhone5용이며, iPad용 새로운 스토리보드 대상과 함께 프로젝트를 보편화합니다. 이제 아래의 AppDelegate.m에 있습니다.didFinishLaunching다음 코드 추가:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

iPhone 3/3Gs/4/4s/5 모든 iPod 및 모든 유형의 iPad용 범용 앱을 만들었습니다.

를 IMG와 하세요.myImage.png그리고.myImage@2x.png

이러한 문제를 해결하고 장치의 높이를 확인하는 데 필요한 몇 가지 조건을 피하는 가장 좋은 방법에 따르면,보기 또는 보기에 추가할 UI 요소에 상대 프레임을 사용하는 것입니다. 예를 들어 보기의 맨 아래나 탭 바로 위에 추가할 UI 요소를 추가하는 경우 보기의 높이 또는 탭 표시줄(있는 경우)과 관련하여 UI 요소를 원점으로 가져가야 합니다. 그러면 자동 크기 조정 속성이 있습니다.뿐만 아니라.이것이 당신에게 효과가 있기를 바랍니다.

조건 집합을 사용하는 대신 화면 크기를 사용하여 보기 크기를 자동으로 조정할 수 있습니다.

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

저의 경우 화면 크기에 따라 상단의 일부 입력 필드와 하단의 일부 버튼 사이의 공간을 채우는 보기를 원합니다.제 앱은 이미지 뷰를 카메라로 찍은 사진으로 채워주기 때문에 제가 얻을 수 있는 모든 공간을 원합니다.

기존 앱을 범용으로 변환해야 하는 경우 해당 xib file->show Utilities-> Show Size inspector를 선택해야 합니다.

Size inspector에서 자동 크기 조정을 볼 수 있으며, 이 도구를 사용하여 기존 iOS App으로 변환할 수 있습니다.

xCode 5를 사용하여 Project > General에서 "Migrate to Asset Catalog"를 선택합니다.

그런 다음 "Show in finder"를 사용하여 시작 이미지를 찾으면 640x1136으로 더미 편집한 다음 아래 이미지와 같이 자산 카탈로그로 끌어다 놓을 수 있습니다.

iOS7 및 iOS6 R4 섹션에 모두 640x1136 이미지가 있는지 확인합니다.다음 번에 앱을 실행하면 검은색 막대가 사라지고 앱이 4인치 화면을 사용합니다.

여기에 이미지 설명 입력

주목할 만한 점 - 새로운 Xcode에서 이 이미지 파일 Default-568h@2x.pn g을 자산에 추가해야 합니다.

을 합니다.Auto Layout뷰에 대한 피쳐입니다.모든 해상도에 자동으로 조정됩니다.

컨트롤러 이름에 접미사가 ~iphone 또는 ~ipad인 컨트롤러에 대해 두 개의 xib를 생성합니다.컴파일 시 Xcode는 장치를 기반으로 오른쪽 xib를 사용합니다.

iPhone과 iPad 모두에 대해 단일 xib를 만들려면 크기 클래스를 사용합니다. 보기가 iPhone과 iPad로 이식할 수 있을 정도로 단순한 경우.

iOS 기기와 iOS 시뮬레이터 모두에서 테스트할 때 약간의 문제가 있습니다. 6이 XCode 6.0.1로 표시됩니다.[[UIScreen mainScreen] bounds].size장치 방향에 따라 다릅니다.

따라서 올바른 실제 화면 크기를 결정할 때 문제가 발생할 수 있습니다.또한 이 코드는 2014년의 모든 iPhone 모델 세대를 구분하는 데 도움이 됩니다.

  • 아이폰4s
  • iPhone5(및 iPhone5s)
  • iPhone6(및 iPhone6+)

예를 들어 iPhone6와 iPhone6+를 구분하기 위해 쉽게 변경할 수도 있습니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}

저는 당신의 UI 인터페이스에 따라 애플리케이션에 자동 크기 조정 마스크를 사용하는 것을 제안하고 싶습니다. 이것은 많은 수고를 덜고 아이폰 4와 5 화면에 다른 UI를 만드는 것보다 낫습니다.

언급URL : https://stackoverflow.com/questions/12395200/how-to-develop-or-migrate-apps-for-iphone-5-screen-resolution

반응형