1

私には見解があります。UIPickerView1~3秒入れられるようにしたいです。の数はUIPickerView、変数の値によって決まりますmyVariable。それぞれUIPickerViewが異なります。の値の中には、ビューにmyVariable1 つしかないことを意味するものもありますがUIPickerView、ビューに 2 つまたは 3 つ配置する必要があり、垂直に配置されることを意味するものもあります (したがって、一方UIPickerViewが他方の真上に配置されます)。現在、myVariable1 のみが必要であることを意味するすべてのケースでは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 に答える