2011-05-02 6 views
12

응용 프로그램이 현재 실행중인 장치의 해상도와 방향에 따라 UIPickerView 인스턴스의 기본 높이를 프로그래밍 방식으로 얻을 수 있습니까?기본 UIPickerView 높이

새 장치가 다른 화면 해상도를 지원하므로이 구성 요소가 다른 기본 크기로 결정될 경우이 매개 변수에 하드 코딩 된 값을 사용하지 않습니다.

+0

당신은 UIPickerView – killianke

답변

1

높이가 0 인 인스턴스를 만들면 적절한 기본 높이로 덮어 쓰게되고 frame.size.height을 얻을 수 있습니다.

그러나 iPad에서는 경고 메시지 (며칠 전에 테스트 됨)가 표시됩니다. 결국 iPad 용으로 하드 코딩 된 값을 사용해야했습니다 ...

P.S. 이것은 UIDatePicker에 대한 것이 었습니다. 그것이 UIPickerView와 정확히 일치하는지 확실하지 않습니다.

+0

에 intrinsicContentSize.height 속성을 사용할 수있는 경고를 발행하지 않는 모든 가능한 방법이 있나요 216px입니까? 기본 크기를 갖는 것이 권장되는 구성 요소를 추가하기위한 시스템 강요에 의존하는 것이 다소 바람직하지 않은 것처럼 보입니다. – luvieere

+0

설명을 위해이 "경고"는 단순히 시스템이 콘솔에 인쇄하는 메시지입니다. 이 경고에는 제안 된 기본 높이가 포함되어 있습니다.이 높이는 하드 코딩 된 값으로 코드 설정이 끝난 것입니다. 그렇게하면 경고가 표시되지 않습니다. 내가 말했듯이 기본값을 0으로 설정 한 다음 시스템에서 설정 한 값을 읽으면 iPhone/iPod에서 이러한 경고를 얻지 못합니다. 이는 iPad에서만 발생합니다. –

+0

iOS 4.2에서도 iPhone의 경고 메시지를 받았는데 컨트롤의 크기가 적절한 크기로 초기화되었음을 알려줍니다. – luvieere

-1

uipickerview의 frame 속성을 사용할 수 있습니다.

15

André이 본 경고가 더 이상 발생하지 않는 것 같습니다 (XCode 4.2, iOS SDK 5.0). 당신이 initWithFrame 그것을 만들고 그것을 0의 높이를주는 경우에, 당신은 다음이 frame.height 속성에서 높이의 다시 읽을 수 있습니다

uiPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 77, 320, 0)]; 
DLog(@"uiPickerView=%@",uiPickerView); 

이 제공 :

uiPickerView=<UIPickerView: 0x9a28c40; frame = (0 77; 320 216); layer = <CALayer: 0x9a28d00>> 

그래서 216은 기본 높이입니다.

헤더의 정의를 찾을 수 없으므로 다시 읽는 것이 가장 안전한 방법입니다.

높이가 0이 아닌 프레임을 설정할 수는 있지만 Apple은 그렇게하지 않는다고 말하면 렌더링 문제가 발생할 수 있습니다.

+0

(iPhone에서는 세로), 216은 여전히 ​​정확합니다 (iOS 10 및 iPhone 7 기준). 그러나 풍경에서는 프레임을 인쇄 할 때 162입니다. – user1687195

0

자동 레이아웃으로 나는 당신이 그것의 바닥에 고정시킬 수 없다는 사실 때문에 같은 것을 궁금해하고 있었다. UIPickerView을 변경하지

기본 높이 ** UIPickerView**