2010-06-02 4 views
2

유니버설을 만들고 싶은 iPad 앱이 있습니다. 그러나 이것은 놀랍도록 어려울 것 같습니다. 내가 두 가지 빌드를 모두 지원할 수 있도록 환경을 변경했지만 빌드 할 때 UIPopover 사용에 관해 많은 오류가 발생합니다. 궁금한 점은 다음과 같습니다.iPad 앱을 유니버설 앱으로 만들기

  • UI_USER_INTERFACE_IDIOM()은 3.1.3에서 컴파일되거나 등록되지 않는 이유는 무엇입니까?
  • UI_USER_INTERFACE_IDIOM()을 기반으로 클래스 정의에 조건부로 변수를 포함 할 수 있습니까?
  • 그렇지 않으면 두 개의 다른보기 컨트롤러를 만들어야합니까?

감사합니다.

답변

3

UI_USER_INTERFACE_IDIOM()이 (가) 3.1.3에서 컴파일 또는 등록하지 않는 이유는 무엇입니까?

UI_USER_INTERFACE_IDIOM 매크로는 3.2로 시작하는 경우에만 사용할 수 있습니다. userInterfaceIdiom 속성에 대한 제한은 UIDevice입니다. 즉, SDK 3.2부터는 범용 응용 프로그램 만 사용할 수 있습니다.

나는 조건부 UI_USER_INTERFACE_IDIOM에 따라 클래스 정의에서 변수를 가질 수()?

No. UI_USER_INTERFACE_IDIOM 매크로는 장치의 현재 UI 관용구를 얻기위한 런타임 지름길입니다.

그렇지 않은 경우 두 개의 서로 다른 보기 컨트롤러를 만들어야합니까?

는 두 장치 사이의 매우 다른 UI를 가지고있는 경우,이 UI_USER_INTERFACE_IDIOM 매크로를 이용하여 두 개의 서로 다른 뷰 컨트롤러를 사용하고, (예를 들어, 애플리케이션 제어기) 런타임 오른쪽을 만들 현명하다.

+0

그래서 유니버설 앱을 원한다면 3.2 용으로 빌드 할 수 있습니까? 나는 iPhone이나 iPod touch에서 3.2를 실행할 수 없으므로'UI_USER_INTERFACE_IDIOM() '을 전혀 사용할 수 없다는 것을 이해합니다. 3.2 용으로 빌드해야하며 두 팔 빌드 설정을 모두 사용해야합니까? iPhone과 같이 3.2가 실행되지 않는 장치에서 어떻게 테스트합니까? "UIPopoverController"가 해당 버전에서 인식되지 않기 때문에 3.1.3에서 컴파일 할 수없는 것으로 보입니다. –

+0

예, 범용 앱은 3.2 부터만 사용할 수 있습니다. 현재 아이폰은 SDK 3.2를 실행하지 않지만 아이 패드는 SDK를 실행한다. 범용 앱을 개발하면 기본 SDK를 3.2로 설정하고 대상 SDK를 3.1 이상으로 설정해야합니다. 그런 다음 3.2 클래스 또는 기능을 사용할 수 있는지 확인하기 위해 런타임 검사를 수행해야합니다. 유니버설 앱을 만드는 방법을 설명하는 iPad 프로그래밍 가이드 (http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/StartingYourProject/StartingYourProject.html)를 읽는 것이 좋습니다. –

+0

예, SDK 3.2를 사용하여'UI_USER_INTERFACE_IDIOM()'을 컴파일해야하지만 3.1 이전에는 작동합니다. – user102008

2

나는 목표를 선택하고 프로젝트 -> 업그레이드 현재 목표로가는 것만으로도 꽤 좋은 행운을 얻었습니다.

내 응용 프로그램은 주로 테이블 뷰 및 webviews 구성된 아주 간단하지만, 백업을하고 시도 가치가 ...

그리고 그래, 당신은 3.1를 타겟팅 할 수 있습니다 3.2 응용 프로그램으로 제출해야합니다. *

할 일이 많습니다. 어떤 방향으로도 볼 수 있는지 확인하십시오 (처음으로 거부되었습니다). 새 이미지를 모두 만들어야합니다. 당신은 3 개 또는 4 개의 아이콘을 가지고 있어야합니다. 아이폰 앱과 같은 아이콘 하나가 필요합니다. (iPad 아이콘, iPhone 아이콘, 스포트라이트를위한 작은 아이콘 등). 그리고 당연히 iPad는 상점을 위해 스크린 샷을 찍었습니다.

아이 패드인지 아이폰인지 테스트하는 정말 좋은 방법은 분할보기 컨트롤러를 사용할 수 있는지를 확인하는 것입니다. 왜냐하면 미래에 아이폰만큼 작은 화면을 가진 장치가 없기 때문입니다. 분할보기 컨트롤러를 사용합니다.난 그냥 그것에 대한 검사를 할 어디서나 내 응용 프로그램에서 나는 장치에 따라 다른 무언가를 표시 할 그 다음

+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; } 

:

int width = 150; 
if([NabAppDelegate isIpad]){ 
    width = 350; 
} else { 
    width = 150; 
} 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)]; 

이를 그냥 나를 위해이 작업을 수행하는 함수를 만들어 몇 가지 제안을 본 것처럼 OS 버전을 확인하는 것보다 훨씬 낫습니다.