2013-02-26 3 views
1

현재 iOS iPhone 응용 프로그램이 있습니다.iphone 응용 프로그램을 iPad, iOS로 변환 하시겠습니까?

내가 원하는 것은 보편적으로 만들어서 iPad도 타겟팅 할 수 있습니다.

내가 한 것은 대상으로 이동하여 iPhone에서 범용으로 iOS 응용 프로그램 대상을 변경했습니다.

이제 iPad에서 응용 프로그램을 실행하면 iPad 용 모든보기의 크기가 자동으로 조정됩니다.

하지만 배경 화면이 너무 좋지 않은 일부보기가 있습니다. 더 높은 해상도의 사진을 사용해야하거나 일반적으로 iPad 버전에서 일부 항목을 변경해야하기 때문입니다.

iPad .nib 파일은 어디에 있습니까 ??? 내 말은, 아이폰 만 볼 수있다. 내 아이폰에서 실행할 때,이 파일들이 사용됩니다. 내 iPad에서 실행할 때 모든 것이 올바르게 크기가 조정되지만이 .nib 파일은 대체 어디 있습니까?

내가 읽은 튜토리얼 (꽤 오래된 것)은 iPad를 대상으로 할 때 ipad에 대한 정확한 .copy 파일을 만들어야한다고 제안했습니다. 왜 내가이 파일들을 보지 못했을까요?

답변

2

iOS에서 Retina 그래픽의 작동 방식과 유사한 확장 기능을 기반으로 올바른 xib를 자동으로로드하게 할 수 있습니다.

아이폰 버전 : 당신의 XIB가 Awesome 이름, 당신은 아이폰 에게 아이 패드 버전을 가지고 (대신 공유되는로 변환 할 경우,이되도록 이름을 변경

Awesome~iphone 

아이 패드 버전을 : 당신이 Awesome를로드하는 아이폰 OS를 말할 때

Awesome~ipad 

그리고, 그것은 자동적으로 현재의 플랫폼을 기반으로로드 할 하나를 선택할 수 없게됩니다 필요 당신의 if 문에 대한. r 코드! 을 원하지만 여전히 필요하지는 않습니다.

참고 : 이름을 바꾼 후에 깨끗하게해야 할 수도 있습니다! 이름이 바뀌면 일부 파일이 빌드에 붙는 경우가 있습니다.

+0

감사합니다 Kitsune, 그게 내가 rooster117 내 의견에 대한 내 대답에 대해 얘기했다. –

1

당신은 단지 새로운 .xib 파일을 확인하고 같은 클래스로 설정해야합니다 그리고 당신은 조건의 ViewController 것을 초기화하기 수 : 동일한 .xib를 사용하려고합니다 가능하면

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    yourVC = [[YourViewController alloc] initWithNibName:"YourViewController_ipad" andBundle:nil]; 
} 
else 
{ 
    yourVC = [[YourViewController alloc] initWithNibName:"YourViewController" andBundle:nil]; 
} 

을하지만, 많은 경우에 그렇게 할 수 없으며 좋아 보이기 때문에 초를 만들 수 있습니다. Xcode는 자동으로 처리하지 않습니다.

+0

그래서 .nib 파일에 대해 단지 테이블 뷰를 사용하여 새로운 테이블을 생성 할 필요가 없지만 변경이 필요한 테이블은 내 코드에 추가하고 다른 펜촉을 만드시겠습니까? 하지만 ViewController_iphone.nib 및 ViewController_ipad.nib와 같은 2 개의 다른 .xib 파일이있는 프로젝트를 본 이유는 무엇입니까? 코드를 "알리는"코드가 전혀 없지만 결국 iPhone에서 실행될 때 결국 올바른 응용 프로그램이 될 때입니다. 다시 ipad를 실행 올바른 하나입니까? 그들은 어떻게합니까? –

+0

@ d0nparalias 이것은 'AppDelegate'에 지정됩니다. 같은 코드가 있습니다. –

+0

Kitsune 대답을 확인하는 경우, 내가 말하는 것에 대해, 코드를 작성할 필요가 없습니다. –

1

클래스가 있다고 가정 해 보겠습니다. 우리는 그것을 Two이라고 부를 것입니다.

여기에 Two 클래스를 구성하는 현재 파일이 있습니다.

Two.h 
Two.m 
Two.xib 

Two.xibUIView가 아이폰 크기가 포함되어 있습니다. iPad 크기의보기를 만들려면 새 XIB 파일 (이름은 Two_iPad.xib)을 만들고 XIB를 Two에 연결하고 UIView의 크기를 iPad의 경우 Two_iPad.xib으로 변경하고 적절하게 디자인해야합니다.

Two의 새 인스턴스를 만들 때 다음을 수행하십시오.

Two *two; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    //they are using an iPad 

    two = [[Two alloc] initWithNibName:@"Two_iPad" bundle:nil]; 

} else { 
    //they are using an iPhone/iPod Touch 

    two = [[Two alloc] initWithNibName:@"Two" bundle:nil]; 

} 

Two의 새 인스턴스를 만들고 있습니다. 그러나 사용자가 가지고있는 장치를 확인하고 해당 XIB 파일을 사용하고 있습니다.

관련 문제