如何根據應用程序當前運行的設備的分辨率和方向以編程方式獲取UIPickerView實例的默認高度?默認UIPickerView高度
我不想爲此參數使用硬編碼值,因爲新設備將支持不同的屏幕分辨率,因此會確定此組件具有不同的默認大小。
如何根據應用程序當前運行的設備的分辨率和方向以編程方式獲取UIPickerView實例的默認高度?默認UIPickerView高度
我不想爲此參數使用硬編碼值,因爲新設備將支持不同的屏幕分辨率,因此會確定此組件具有不同的默認大小。
如果您創建一個高度爲0的實例,它將被適當的默認高度覆蓋,並且您可以獲取其frame.size.height
。
但是,在iPad上這將發出警告(幾天前測試)。我最終不得不使用iPad的硬編碼值...
P.S.這是爲了一個UIDatePicker;不確定它是否與UIPickerView完全相同。
的intrinsicContentSize.height財產是否有不發出警告的任何可能的方式?使用系統強制來添加一個推薦具有默認大小的組件似乎很棘手。 – luvieere 2011-05-02 10:57:54
爲了澄清,我提到的這個「警告」只是系統打印到控制檯的消息。此警告包括建議的默認高度,這是我最終在代碼上設置的硬編碼值。如果你這樣做,你沒有得到任何警告。就像我說的,如果您將默認值設置爲0(然後讀取系統設置的值),您將不會在iPhone/iPod上看到這些警告,而只會在iPad上顯示。 – 2011-05-02 11:12:14
我在iOS 4.2上也收到了警告消息,通知我控件的大小已被默認爲適當的大小。 – luvieere 2011-05-02 12:05:20
您可以使用uipickerview的frame屬性。
André看到的警告似乎不再發生(XCode 4.2; iOS SDK 5.0)。如果您有initWithFrame
創建它,並給它的零高度,你就可以讀回它的高度從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是默認的高度。
我在頭文件中找不到這個定義,所以讀回來似乎是最安全的方法。
可以設置一個非零高度的框架,但蘋果公司表示不這樣做,它似乎會導致渲染問題。
在縱向iPhone上,216仍然是正確的(截至iOS 10和iPhone 7)。然而,在風景中,當我打印框架時,它是162。 – user1687195 2017-08-04 20:25:46
你可以使用上UIPickerView – killianke 2017-09-26 16:27:46