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

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

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

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



답변

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

답변

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

더 큰 화면에 앱을 적용하려면 먼저 시작 이미지를 Default-568h@2x.png로 변경해야합니다. 크기는 1136×640 (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
    }
}


답변

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

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

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

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


답변

때로는 (사전 스토리 보드 응용 프로그램의 경우) 레이아웃이 충분히 다른 경우 장치에 따라 다른 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 버전을 대상으로하는 앱에 유용합니다.


답변

여기서 훌륭한 자습서를 찾을 수 있습니다 (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());
    }
}


답변

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를 추가하십시오. 더 이상 런타임 확인이나 코드 변경이 필요하지 않습니다.