我有一个 UIPickerView,它将为用户显示一个项目列表。我希望每个项目都显示为多行文本,每行使用不同的字体大小。一个粗略的模型如下所示。这将允许呈现比默认 UIPickerView 的单行更多的文本。
bdesham 指出我在 UIPickerView 的委托中使用 pickerView:viewForRow:forComponent:reusingView。这似乎是要走的路,因为它可以让我为各个行提供我自己的自定义视图。
我的想法是创建一个 UIView,它有 2 个 UILabel 子视图,每一行文本一个。这样我就可以对每一行应用不同的字体。我尝试了以下方法,但布局似乎不起作用。我需要线条在另一个之上。下面是我尝试通过掩码将第二行浮动到底部。
#define VIEWTAG_LINE1 1
#define VIEWTAG_LINE2 2
- (UIView*)pickerView:(UIPickerView *)thePickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UIView* v;
if (view)
v = view;
else
{
v = [[[UIView alloc] init] autorelease];
UILabel* l1 = [[[UILabel alloc] init] autorelease];
l1.tag = VIEWTAG_LINE1;
[v addSubview: l1];
UILabel* l2 = [[[UILabel alloc] init] autorelease];
l2.tag = VIEWTAG_LINE2;
l2.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
[v addSubview: l2];
}
UILabel* l1 = (UILabel*)[v viewWithTag: VIEWTAG_LINE1];
l1.text = [NSString stringWithFormat: @"row %d line 1", row];
[l1 sizeToFit];
UILabel* l2 = (UILabel*)[v viewWithTag: VIEWTAG_LINE2];
l2.text = [NSString stringWithFormat: @"row %d line 2", row];
[l2 sizeToFit];
[v sizeToFit];
return v;
}
这会产生以下内容。关于获得两个 UILabel 视图以便将它们堆叠在一起产生所需的多行结果的任何建议?