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


495

새로운 iPhone 5 디스플레이에는 새로운 종횡비와 새로운 해상도 (640 x 1136 픽셀)가 있습니다.

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

구형 디스플레이와 새로운 와이드 스크린 종횡비 모두에 응용 프로그램을 "보편적"으로 만들려면 무엇을 명심해야합니까?

답변:


481
  1. 최신 버전의 Xcode를 다운로드하여 설치하십시오 .
  2. 대상 설정의 일반 탭에서 앱의 시작 화면 파일을 설정하십시오. iOS 9의 iPad 분할보기 크기를 포함하여 모든 화면의 전체 크기를 사용하는 방법입니다.
  3. 자동 크기 조정 마스크를 올바르게 설정하거나 자동 레이아웃을 사용하면 모든 것이 마술처럼 작동하기 때문에 앱을 테스트하고 다른 작업을 수행하지 마십시오.
  4. 그렇지 않은 경우 자동 레이아웃을 사용하여보기 레이아웃을 조정하십시오.
  5. 더 큰 화면을 위해 특별히해야 할 일이 있다면 [[UIScreen mainScreen] bounds]특정 API가없는 것처럼 높이를 확인 해야하는 것처럼 보입니다. iOS 8부터는 화면 크기를 수직 또는 수평으로 추상화하거나 UI를 조정하는 것이 권장되는 크기 클래스가 있습니다.

1
어쩌면 메신저 촬영 일 수도 있습니다. 새로운 해상도 및 종횡비? 새로운 자동 회전? 안돼! 실제로, 더 많은 자동 회전 제어가 좋을 수 있습니다.
리듬 피스트 맨

89
[UIImage imageNamed : @ "background.png"]는 여전히 "background.png"또는 "background@2x.png"만로드하고 "background-568h@2x.png"는로드되지 않습니다. .
tvon September

1
"Default-568h@2x.png"를 추가하는 것이 충분합니까 아니면 빌드 설정에서 조정할 수 있거나 추가해야 할 추가 옵션이 있습니까?
Lukasz

3
@Lukasz는 1136 px 높이를 지원하기에 충분합니다. 앱이 올바르게 확장되는지 여부는 뷰 설정 방법에 따라 다르지만 모든 것을 하드 코딩하더라도 자동 크기 조정 마스크 또는 자동 레이아웃을 설정하는 데 많은 노력을 기울이지 않아야합니다.
Filip Radelic

1
@FilipRadelic-지정한 해상도, 즉 1136 * 960,
그렇지

117

iPhone 4S 이하용으로 제작 된 앱이 있다면 iPhone 5에서 레터 박스로 실행됩니다.

더 큰 화면에 앱을 적용하려면 먼저 시작 이미지를 Default-568h@2x.png로 변경해야합니다. 크기는 1136x640 (HxW)이어야합니다. 그러나 새로운 화면 크기의 기본 이미지를 갖는 것이 앱이 새로운 iPhone 5의 화면 전체를 차지하게하는 열쇠 입니다.

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

매우 운이 좋으면 그럴 수도 있지만, 아마도 몇 가지 단계를 더 거쳐야 할 것입니다.

  • Xibs / View가 자동 레이아웃을 사용하여 크기를 조정하십시오.
  • 스프링과 스트럿을 사용하여 뷰 크기를 조정하십시오.
  • 이것이 앱에 충분하지 않은 경우 특정 화면 크기에 맞게 xib / 스토리 보드를 디자인하고 다른 화면 크기에 맞게 프로그래밍 방식으로 재배치하십시오.

극단적 인 경우 (위의 어느 것도 충분하지 않은 경우), 두 Xibs를 설계하고 뷰 컨트롤러에 적절한 Xibs를로드하십시오.

화면 크기를 감지하려면

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

안녕하세요 sanjay, 우리는 그것의 아이폰 5 또는 이전 버전을 찾아야하므로, 따라서 모든 항목의 크기를 조정해야합니다. 내비게이션 바 및 탭 막대가있는 높이 367의 테이블 뷰가 있고 아이폰 5의 크기를 조정해야한다고 말하는 것처럼
Raheel Sadiq

2
iPod touch는 어떻습니까? 다음 iPhone 세대는 어떻습니까? iPhone / iPhone5가 아닌 3.5 인치 / 4 인치 화면 크기를 참조해야합니다.
valexa

2
또 다른 주목해야 할 것은 xib의 크기가 조정되기 전에 viewDidLoad가 호출된다는 것입니다. 따라서 펜촉의 항목을 기반으로 계산을 수행하는 경우 위치가 어떻게 이동하는지 알 수 있습니다 (또는 viewWillAppear에서 계산 수행).
Kendall Helmstetter Gelner

30

실제로 필요한 것은 앱 리소스에 "Default-568h@2x.png"라는 시작 이미지를 추가하는 것입니다. 일반적으로 운이 좋으면 앱이 올바르게 작동합니다.

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

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

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


22

때로는 (사전 스토리 보드 응용 프로그램의 경우) 레이아웃이 충분히 다른 경우 장치에 따라 다른 xib를 지정하는 것이 좋습니다 ( 이 질문 참조 -iPhone 5를 처리하기 위해 코드를 수정해야합니다). 다른 크기의 그래픽이 필요한 경우 자동 크기 조정 마스크를 사용하는 twiddling이 작동하지 않으므로 init.

-(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 버전을 대상으로하는 앱에 유용합니다.


+1 그러나주의해야 할 점은 향후 호환성입니다. 현재이 코드는 iPhone 5 기기만을 고려하기 때문에 안전하지 않습니다. 화면 크기를 확인하는 것이 더 안전한 대안입니다.
Stunner

사실-이것은 장치 유형을 반환하는 유틸리티의 일부 일 수 있습니다. 실제로 장치를 얻는 것이 아니라 다른 펜촉을 사용하는 방법을 보여주는 예제 일뿐입니다.
SomaMan

20

여기서 훌륭한 자습서를 찾을 수 있습니다 (MonoTouch의 경우 비 MonoTouch 프로젝트에 대한 정보도 사용할 수 있음).
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6- 오늘 /

  1. 이름이 " Default-568h@2x.png "인 스플래시 / 기본 화면 ( 640 x 1136 픽셀 ) 의 새 이미지를 만듭니다.

  2. 에서 iOS 시뮬레이터 "> 장치 메뉴를 선택 - 하드웨어로 이동 아이폰 (망막 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());
    }
}

13

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];
}

12

이 문제를 여기서 해결 합니다 . 이미지에 ~ 568h @ 2x 접미사를 추가하고 xib에 ~ 568h를 추가하십시오. 더 이상 런타임 확인이나 코드 변경이 필요하지 않습니다.


이 클래스를 프로젝트에 추가하십시오. 추가 코드를 작성할 필요가 없습니다. 예를 들어 해상도 320x480, 640x960, 640x1136 (iPhone 3, iPhone 4, iPhone 5)의 배경 이미지가있는 xib 파일이 하나 있습니다. 올바른 자동 크기 조정 마스크를 설정하고 이미지 이름을 image.png, image@2x.png, image~568h@2x.png로 지정하십시오.
Shimanski Artem

@ ShimanskiArtem 그러나 일부 구성 요소가 다른 위치로 실행되는 것을 알 수 있습니다!
Adel

자동 크기 조정 마스크를 확인하십시오. 다른 이유는 없습니다.
Shimanski Artem

10

나는 새로운 기본 발사 이미지를 추가하고 (다른 SE 답변을 확인하면서 ...) 스토리 보드가 모두 자동 크기 조정되고 하위보기를 유지하지만 망막 4 인치는 여전히 레터 박스로 작성되었습니다.

그런 다음 내 정보 plist에 " Launch image "에 대한 광고 항목 이 " Default.png "로 설정되어 제거되어 마법의 레터 박스가 더 이상 나타나지 않는 것을 알았습니다. 바라건대, 그것은 내가 견뎌낸 똑같은 광기를 다른 누군가를 구해줍니다.


9

모든 경우에 작동하지는 않지만 내 특정 프로젝트에서는 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...
}

9

A의 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)

9

앱에서 iPhone 5 Retina를 지원할 수 있는지 확인하려면 다음을 사용하십시오. 예 혹은 아니오)

일반적인 ".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;
}

8

우선 두 개의 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)


7

싱글 톤 클래스에서 아래 방법을 시도하십시오.

-(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";
    }

7

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


iOS 6을 지원하지 않는 기기에서는 작동하지 않습니다.
jonypz

7

검사 bounds568 가로 모드에서 실패합니다. iPhone 5는 세로 모드에서만 실행되지만 회전을 지원하려면 iPhone 5 "확인"도이 시나리오를 처리해야합니다.

방향 상태를 처리하는 매크로는 다음과 같습니다.

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

'preferredMode'호출의 사용은 몇 시간 전에 읽은 다른 게시물에서 왔 으므로이 아이디어를 얻지 못했습니다.


6

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

여기에 이미지 표시

이 코드를 사용한 후 :

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

6

나는 하드 코딩 된 값없이 모두를위한 하나의 코드베이스를 가지고 있었기 때문에 어떤 장치에서도 그러한 문제에 직면하지 않았습니다. 내가하는 일은 최대 크기의 이미지를 각 장치마다 하나씩 대신 리소스로 사용하는 것입니다. 예를 들어, 나는 망막 디스플레이를 위해 하나를 가지고 종횡비로 표시하므로 모든 장치에서와 같이보기가됩니다. 예를 들어 런타임에서 버튼의 프레임을 결정합니다. 이를 위해 특허보기의 % 값을 사용합니다.

이것으로 나는 xib가 필요하지 않습니다.


5

이 정의를 사용하여 화면 크기를 기준으로 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
    }

4

Peter, 당신은 Canappi를 정말로 살펴 봐야합니다. 그것은 당신을 위해 모든 것을합니다.

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

거기에서 Canappi는 앱이 실행되는 장치를 감지하고 다음을 사용할 올바른 objective-c 코드를 생성합니다.

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

Canappi는 텍스트 형식 인 것을 제외하고 Interface Builder 및 Story Board와 같이 작동합니다. XIB 파일이 이미있는 경우 전체 UI를 처음부터 다시 만들 필요가 없도록 변환 할 수 있습니다.


많은 메타 덕분에 이것을 살펴볼 것이지만 매우 새로운 프로그래머이며 실제로 깨끗한 Objective-C에서 이것을 처리하는 방법을 배우고 싶습니다.
PeterK

4

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

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

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

} else {

    // 3"

}

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");
        }
    }

2
이것은 실제로 약간 잘못되었습니다. iOS 4.0 이상을 실행하는 모든 iPhone은 scale선택기에 응답합니다 .UIScreen "표준 해상도"코드가 실행되지 않는 경우가 있습니다.
Filip Radelic

3

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

프로젝트 유니버설 모드를 설정하고 iPhone 5 스토리 보드 및 iPad 대상 스토리 보드가있는 ipad 메인으로 iPhone의 메인 스토리를 설정하십시오. 이제 iphone 용 새 스토리 보드 대상을 추가하고 iphone 4s 이하의 해상도를 수정하십시오 .AppDelegate.m

iPhone4 / 4s (3 / 3G와 동일) iPhone5 용으로, iPad 용 새 Storyboard 대상을 사용하여 이제이 코드를 추가 하여 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


2

나에 따르면 이러한 문제를 해결하고 장치 높이를 확인하는 데 필요한 몇 가지 조건을 피하는 가장 좋은 방법은 뷰에 상대 프레임을 사용하거나 뷰에 추가하는 UI 요소를 사용하는 것입니다. 원하는 UI 요소는보기의 맨 아래 또는 탭 막대 바로 위에 있어야합니다.보기의 높이 또는 탭 막대 (있는 경우)와 관련하여 y 원점을 취해야하며 자동 크기 조정 속성도 있습니다. 나는 이것이 당신을 위해 작동하기를 바랍니다


1

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

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

필자의 경우 상단의 일부 입력 필드와 하단의 일부 버튼 사이의 공간을 채우는 뷰를 원하므로 화면 크기에 따라 왼쪽 상단 모서리가 고정되고 오른쪽 하단이 가변적입니다. 내 응용 프로그램은 카메라로 찍은 사진으로 이미지보기를 채우므로 얻을 수있는 모든 공간을 원합니다.


1

기존 앱을 범용 앱으로 변환해야하는 경우 해당 xib 파일-> 유틸리티 표시-> 크기 표시 관리자를 선택해야합니다.

크기 관리자에서 자동 크기 조정을 볼 수 있습니다.이 도구를 사용하면 기존 iOS 앱으로 변환 할 수 있습니다.


0

xCode 5를 사용하여 프로젝트> 일반에서 "자산 카탈로그로 마이그레이션"을 선택하십시오.

그런 다음 "파인더에 표시"를 사용하여 시작 이미지를 찾은 다음 640x1136로 더미 편집 한 다음 아래 이미지와 같이 자산 카탈로그로 드래그하십시오.

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

여기에 이미지 설명을 입력하십시오


0

주목할만한 포인트-새로운 Xcode에서는이 이미지 파일 Default-568h@2x.png를 자산에 추가해야합니다


0

사용 Auto Layout보기 기능을 . 모든 해상도에 자동으로 조정됩니다.

제어기 이름이 ~ iphone 또는 ~ ipad 인 제어기에 대해 두 개의 xib를 작성하십시오. 컴파일 타임에 Xcode는 장치에 따라 올바른 xib를 사용합니다.

보기가 iPhone 및 iPad로 이식하기에 충분히 단순하다면 iPhone 및 iPad 용 단일 xib를 작성하려면 크기 클래스를 사용하십시오.


0

iOS 기기와 iOS 시뮬레이터 모두에서 테스트 할 때 약간의 문제가 있습니다. 시뮬레이터 (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
}

0

UI 인터페이스에 따라 응용 프로그램에서 자동 크기 조정 마스크를 사용하는 것이 좋습니다. 많은 문제가 발생하지 않으며 iPhone 4 및 5 화면에 다른 UI를 만드는 것보다 낫습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.