【发布时间】:2011-08-16 21:02:45
【问题描述】:
如何根据当前运行应用的设备的分辨率和方向以编程方式获取 UIPickerView 实例的默认高度?
我不想为此参数使用硬编码值,以防新设备支持不同的屏幕分辨率并因此确定此组件具有不同的默认大小。
【问题讨论】:
-
你可以使用 UIPickerView 上的 intrinsicContentSize.height 属性
标签: iphone size uipickerview
如何根据当前运行应用的设备的分辨率和方向以编程方式获取 UIPickerView 实例的默认高度?
我不想为此参数使用硬编码值,以防新设备支持不同的屏幕分辨率并因此确定此组件具有不同的默认大小。
【问题讨论】:
标签: iphone size uipickerview
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 的实例,它将被适当的默认高度覆盖,您只需获取它的frame.size.height。
但是,在 iPad 上,这会发出警告(几天前测试过)。我最终不得不为 iPad 使用硬编码值...
附:这是针对 UIDatePicker 的;不确定 UIPickerView 是否完全相同。
【讨论】:
您可以使用 uipickerview 的 frame 属性。
【讨论】: