2012-09-29 2 views
2

나는 약간의 문제가있는 아주 기본적인 질문을하고있다. iPhone과 iPad의 차이점을 알고 있습니다 ... iPad가 SplitView, popup over을 지원하지만 설계 중에 오류가 발생합니다. 나는 designd 가지고 UITextView디자인에서 아이폰과 아이 패드의 차이점

UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(42, 150, 440, 60)]; 

이것은 텍스트 뷰를 설계하는 기본 코드입니다하지만 아이 패드 시뮬레이터에이 코드를 실행할 때 나에게 잘 보인다. 하지만 아이폰에서 실행할 때 잘 돌아 가지 않습니다. 왜냐하면 그 아이폰의 크기가 다르기 때문입니다.이 경우 iPhone과 iPad 모두에서 제대로 실행하려면 어떻게해야합니까?

+0

'백분율'(또는 '상대') 식을 알고 있습니까? –

+0

나중에 나는 남자를 안다! 하지만 너비와 높이와 함께 사용하는 방법을 몰라서 미안해. – Christien

답변

2

나는 범용 실행 파일을 선택한다고 가정하고 있으므로 조건부 컴파일은 옵션이 아닙니다.

범용 실행 파일을 만들 때는 장치 유형에 따라 호출하기 전에 의존하고있는 기능을 확인해야합니다. 이 특별한 경우에는 특정 크기의 화면을 사용합니다. 대신 하드 코딩 "매직 넘버를"(42, 15, 440, 60)이 가능한 화면의 현재 크기에서 그들을 계산해야합니다

CGFloat w = [UIScreen mainScreen].bounds.size.width; 
CGFloat h = [UIScreen mainScreen].bounds.size.height; 
// Do something like this if you can 
UITextView *textview = [[UITextView alloc] 
    initWithFrame:CGRectMake(w*0.025, h*0.25, w*0.5, h*0.125) 
]; 

로부터 실제 크기를 계산하는 기회가있다 화면 크기가 비례 적으로 화면에 표시되지 않기 때문에 화면 크기를 사용할 수 없습니다. 이와 같은 경우 hw의 값을 확인하고 장치 크기를 감지 한 다음 해당 미리 정의 된 크기 세트를 사용하여보기를 초기화 할 수 있습니다.

+0

나중에 나는이 정보를 위해 universal.java를 선택하고 있습니다. 좌표를 다루는 유일한 방법입니다. – Christien

+0

오, 그렇습니다. 궁극적 인 (상식) 해결책입니다. +1. –

+0

@Christien 아니요, 비율에 비례하여 계산하는 것이 유일한 방법은 아닙니다. 화면에서보기 모서리의 좌표를 결정하는 함수로 원하는대로 창의적으로 만들 수 있습니다. 하지만 궁극적으로 전체 화면의 크기와 해상도가 함수의 유일한 입력 변수가됩니다. – dasblinkenlight

관련 문제