我想UIPickerView
在我的 iPhone 应用程序中降低 a 的高度,以便它只显示一行和一列。选择器视图的高度应该等于一行的高度。
我正在使用 Interface Builder 来构造UIPickerView
,但我找不到重新调整此控件大小的简单方法。
你怎么缩小一个UIPickerView
?
我想UIPickerView
在我的 iPhone 应用程序中降低 a 的高度,以便它只显示一行和一列。选择器视图的高度应该等于一行的高度。
我正在使用 Interface Builder 来构造UIPickerView
,但我找不到重新调整此控件大小的简单方法。
你怎么缩小一个UIPickerView
?
实际上,您可以通过对封闭视图应用仿射变换来稍微缩小整个 UIPickerView。例如:
CGSize pickerSize = [pickerView sizeThatFits:CGSizeZero];
pickerTransformView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, pickerSize.width, pickerSize.height)];
pickerTransformView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
[pickerTransformView addSubview:pickerView];
[self.view addSubview:pickerTransformView];
[pickerTransformView release];
通过将选取器放置在包含视图中并将缩放变换应用于该视图,将选取器缩放到其原始大小的 75%。将转换直接应用于 UIPickerView 会导致不良的绘图伪影。
但是,您正在寻找的调整大小最好通过创建自定义控件来实现。
这是可能的和容易的!
只需以纯文本格式打开 nib 文件,然后找到选取器视图并调整度量:
<object class="IBUIPickerView" id="783900772">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{85, 68}, {150, 116}}</string>
就这样!
据我所知,如果你缩小它会搞砸的。
a)UITableView+UIPickerView
我建议您使用“a row in”UITableView+UIPickerView
来执行此操作。您可以在 tableView 中使用一行,就像 Windows 中的 dropDownList 一样,当您点击该行时,将显示 pickerView(起初隐藏)。
b) 如果 tableView 中的数据列表很长,并且只有一项需要选择数据,则应使用以下方法滚动视图(确保计算 pickerView 的原始位置,因为它会向上/向下移动一起):
-(void)setViewMove:(BOOL)moveUP offset:(CGFloat)offset
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if(moveUP)
{
rect.origin.y-=offset;
rect.size.height+=offset;
}
else //move down
{
rect.origin.y+=offset;
rect.size.height-=offset;
}
self.view.frame = rect;
[UIView commitAnimations];
}
c) 您还可以为选取器添加另一个视图,并在您选择某些内容后返回此视图。
我的结论是:
如果 tableView 中只有几行,请使用 a.
如果 tableView 中有很多行但只有其中一个需要选择器,请使用 b。
如果您在 tableView 中有很多行并且其中很多需要选择器,请使用 c.
在 Interface Builder 中创建一个简单的 UIView。设置所需的位置和大小,添加约束。选中“剪辑子视图”复选框。然后将 Picker View 作为子视图拖放到此视图中。为选取器添加约束以在容器内水平和垂直对齐。应该做的工作。