【问题标题】:Default UIPickerView height默认 UIPickerView 高度
【发布时间】:2011-08-16 21:02:45
【问题描述】:

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

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

【问题讨论】:

  • 你可以使用 UIPickerView 上的 intrinsicContentSize.height 属性

标签: iphone size uipickerview


【解决方案1】:

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。
【解决方案2】:

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

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

附:这是针对 UIDatePicker 的;不确定 UIPickerView 是否完全相同。

【讨论】:

  • 有什么方法可以不发出警告吗?诉诸系统强制来添加建议具有​​默认大小的组件似乎相当不便。
  • 为了澄清,我提到的这个“警告”只是系统打印到控制台的消息。此警告包括建议的默认高度,这是我最终在代码中设置的硬编码值。如果你这样做,你不会收到任何警告。就像我说的,如果您将默认值设置为 0(然后读取系统设置的值),您将不会在 iPhone/iPod 上收到这些警告,它只会出现在 iPad 上。
  • 我在 iPhone 上也收到了警告消息,在 iOS 4.2 上,通知我控件的大小已默认为正确大小。
【解决方案3】:

对于自动布局,我想知道同样的问题,因为您无法固定到它的底部。

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

【讨论】:

    【解决方案4】:

    您可以使用 uipickerview 的 frame 属性。

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多