2011-03-03 2 views
0

유니버설 앱 (iPhone & iPad에서 실행)을 사용하는 경우 기기마다 UI가 다른 경우 코드의 UI 레이아웃 차이를 어떻게 계산합니까?iPhone SDK : iPhone과 iPad의 UI 레이아웃 차이점을 설명하는 방법은 무엇입니까?

XIB를 사용하는 경우 장치에 따라 다른 XIB를로드하고 동일한 코드를 사용할 수 있습니다. 옳은?

프로그래밍 방식으로 UI를 만드는 경우 어떻게 처리해야합니까? 코드를 살펴보고 장치 유형을 살펴 보는 것보다 더 좋은 방법이 있습니까? 이런 식으로 할 수 있다는 것을 이해합니다. 매우 우아하지 않습니다.

if (isiPhone) 
{   
    UIView *myCommonView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 150.0, 50.0)]; 
    myCommonView.backgroundColor = [UIColor colorWithPatternImage:iPhoneSpecificImage]; 
    // bunch of other conditional code 
} 
else 
{ 
    UIView *myCommonView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 250.0, 150.0)]; 
    myCommonView.backgroundColor = [UIColor colorWithPatternImage:iPadSpecificImage]; 
    // bunch of other conditional code 
} 
+0

이 코드는보기 컨트롤러에 있습니까? 일반적으로 "컨트롤러"는 비즈니스 로직과 뷰 사이의 중개자입니다. 하나의 객체에 두 가지 유형을 둘 다 필요합니까? – Rob

답변

1

if/else 문의로드를 사용하는 것보다 훨씬 더 나은 대안은 여러 개의 앱 대리인을 보유하는 것입니다. 이를 수행하는 쉬운 방법은 AppDelegate_iPhone & AppDelegate_iPad를 만들고 (IB에서) 각각 실행시로드되는 다른 XIB에 바인딩하는 것입니다. 이제 프로그램 방식으로 각 항목에 다른 항목을 추가 할 수 있습니다.

또한 위임자간에 UI 요소를 공유하려는 경우 문제가 발생할 수 있습니다. 이 경우 두 대리자가 사용하는 공유보기를 만들 수 있습니다. 두 경우 모두보기 컨트롤러 만 가져옵니다.

코드의 구조는 모양이 this과 비슷해야합니다.

0

불행하게도,/elsing 만이 작업을 수행 할 수있는 유일한 방법입니다. 그러나 당신이 그것을 생각할 때 그렇게 나쁘지는 않습니다. Apple은 2 개의 다른 장치에 대해 동일한 코드에서 2 개의 다른 응용 프로그램을 생성 할 수 있습니다.

관련 문제