1

我有一个看法。我希望能够在UIPickerView其中放入 1-3 秒。s的数量UIPickerView由变量的值决定myVariable。每个UIPickerView都是不同的。的一些值myVariable意味着视图中只有一个UIPickerView,但有些值意味着我必须在视图中放置 2 或 3 个,并且它将垂直布局(因此一个UIPickerView直接在另一个上方)。现在,每一种情况myVariable意味着它只需要 1 UIPickerView,我将它们放在这样的视图中:

if (myVariable == kNeedsOnlyOnePicker)
{
    myPicker = [[UIPickerView alloc] initWithFrame:self.view.frame];
    [myPicker setDelegate:self];
    [myPicker setDataSource:self];
    myPicker.showsSelectionIndicator = YES;
    [self.view addSubview:myPicker];
}

但是,我只是不确定如何告诉代码是这样的:

if (myVariable == kNeedsTwoPickers)
{
     // put myPicker and myOtherPicker in self.view, 
     // and put myPicker above myOtherPicker.
}

我有一种预感,我将无法使用 .xib 来执行此类操作,因为我将无法设置不同的布局(例如,选择器 2 上方的选择器 1,选择器 3 上方的选择器 2,只有选择器 3 )。

TL;DR 我如何以编程方式说“这个子视图将高于另一个子视图”或“这个选择器将高于另一个选择器”?

具体的方法/例子和/或一般的想法会很棒。

谢谢!

4

1 回答 1

1

我发现我可以为子视图设置框架并计算它的坐标。

- (void)layout
{
    for (int i= 0; i < [self.view.subviews count]; i++)
    {
        // calculate x, y, width, and height
        UIView *subview = [self.view.subviews objectAtIndex:i];

        subview.frame = CGRectMake(x, y, width, height);
    }
}
于 2012-08-13T16:13:52.193 回答