如何根据应用程序当前运行的设备的分辨率和方向以编程方式获取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