2011-05-02 84 views
12

如何根据应用程序当前运行的设备的分辨率和方向以编程方式获取UIPickerView实例的默认高度?默认UIPickerView高度

我不想为此参数使用硬编码值,因为新设备将支持不同的屏幕分辨率,因此会确定此组件具有不同的默认大小。

+0

你可以使用上UIPickerView – killianke 2017-09-26 16:27:46

回答

1

如果您创建一个高度为0的实例,它将被适当的默认高度覆盖,并且您可以获取其frame.size.height

但是,在iPad上这将发出警告(几天前测试)。我最终不得不使用iPad的硬编码值...

P.S.这是为了一个UIDatePicker;不确定它是否与UIPickerView完全相同。

+0

的intrinsicContentSize.height财产是否有不发出警告的任何可能的方式?使用系统强制来添加一个推荐具有默认大小的组件似乎很棘手。 – luvieere 2011-05-02 10:57:54

+0

为了澄清,我提到的这个“警告”只是系统打印到控制台的消息。此警告包括建议的默认高度,这是我最终在代码上设置的硬编码值。如果你这样做,你没有得到任何警告。就像我说的,如果您将默认值设置为0(然后读取系统设置的值),您将不会在iPhone/iPod上看到这些警告,而只会在iPad上显示。 – 2011-05-02 11:12:14

+0

我在iOS 4.2上也收到了警告消息,通知我控件的大小已被默认为适当的大小。 – luvieere 2011-05-02 12:05:20

-1

您可以使用uipickerview的frame属性。

15

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是默认的高度。

我在头文件中找不到这个定义,所以读回来似乎是最安全的方法。

可以设置一个非零高度的框架,但苹果公司表示不这样做,它似乎会导致渲染问题。

+0

在纵向iPhone上,216仍然是正确的(截至iOS 10和iPhone 7)。然而,在风景中,当我打印框架时,它是162。 – user1687195 2017-08-04 20:25:46

0

对于自动布局,我想知道同样的原因,因为您无法将其固定在底部。

默认高度没有变化的UIPickerView是216px** UIPickerView**