更改UIPickerView中显示的行数

3
有没有办法将 UIPickerView 中显示的行数从 5 行更改为 4 行?在 IB 中似乎无法调整选择器的高度,我也找不到任何委托方法来控制这一点。
请注意,我询问的是显示的行数,而不是组件中的行数。

你想通过编程方式选择另一行,是吗? - Pratik
不,我想在UIPickerView中显示4行而不是5行。 - Gerry Koh
4个回答

2
你可以使用以下的 UIPickerViewDelegate 方法来设置UIPickerview中行的高度。
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
  return 60.0f;
}

我不确定需要多高的高度才能显示出四行。您可能需要调整一下,直到达到预期效果!


谢谢!我遇到的问题是,我正在尝试使用图像作为行来设计一个组件。我已经在使用此方法来匹配图像的高度。问题是,我正在尝试减少整个选择器组件的垂直高度,以便每行显示4行,并且每行的高度都是指定的。 - Gerry Koh

0

苹果没有直接提供改变 UIPickerView 高度的方法,使用 setFrame 也不行。

但是有两种方法可以实现相同的效果:

希望这对您有所帮助。


0

在UIPickerView的高度上你不能随意更改,因为一旦你改变了高度,你就必须重新调整每一行的大小和字体,以便它们清晰地分开显示。UiPickerview只有三个有效的高度(162.0、180.0和216.0)。但是你可以通过以下方式改变高度:

CGAffineTransform t0 = CGAffineTransformMakeTranslation (0, mypickview.bounds.size.height/2);
CGAffineTransform s0 = CGAffineTransformMakeScale       (1.0, 0.5);
CGAffineTransform t1 = CGAffineTransformMakeTranslation (0, -mypickview.bounds.size.height/2);
mypickview.transform = CGAffineTransformConcat          (t0, CGAffineTransformConcat(s0, t1));

谢谢,我会尝试一下,看看这些高度是否对应于显示的行数。 - Gerry Koh

-1
如果您想设置 UIPickerView 的高度,则可以使用以下代码:
picketView.transform = CGAffineTransformMakeScale(1, 0.70);

以上代码将缩放UIPickerView

1
但这不会改变显示行数,因为行也将被转换。 - rmaddy
我已经回答了如何调整UIPickerView的高度。 - Yashesh
2
主要问题是“是否有办法将UIPickerView中显示的行数从5行更改为4行?” - rmaddy
但是第二个问题也是关于调整UIPickerView的高度。 - Yashesh

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