默认UIPickerView高度

18

我该如何以编程方式获取UIPickerView实例的默认高度,以符合应用当前运行设备的分辨率和方向?

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


你可以使用UIPickerView上的intrinsicContentSize.height属性。 - killianke
5个回答

16

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

3

使用自动布局时,由于无法将其固定在底部,我也感到疑惑。

如果不对 UIPickerView 进行任何更改,则默认高度为 216px**UIPickerView**


2

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

然而,在iPad上,这将会发出一个警告(几天前测试)。我最终不得不为iPad使用硬编码值...

P.S. 这是针对UIDatePicker的;不确定UIPickerView是否完全相同。


有没有可能不发出警告的方式?采用系统强制转换来添加推荐具有默认大小的组件似乎相当不可取。 - luvieere
仅供澄清,我提到的“警告”只是系统打印到控制台的消息。此警告包括建议的默认高度,这是我最终在代码中设置的硬编码值。如果您这样做,就不会收到任何警告。就像我说的,如果您将默认值设置为0(然后读取系统设置的值),则在iPhone / iPod上不会收到这些警告,仅在iPad上会出现。 - André Morujão
我也在iPhone上收到了警告消息,在iOS 4.2上,提示我控件的大小已被默认为其适当的大小。 - luvieere

1

2022年它是162。图片没有触及高度,只是拉到IB中enter image description here


0
你可以使用 uipickerview 的 frame 属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接