0

地図上に注釈付きの情報を表示し、地図の下に非常に単純なカスタム日付ピッカーを表示したいと考えています。

nibでカスタム ビューを作成し、それを UIView のインスタンスに関連付けました。

この同じクラスには、nib からビュー インスタンスをロードする関数が含まれています。

+(id)loadCustomDatePicker
{
    CustomDatePicker *customDatePicker = [[[NSBundle mainBundle] loadNibNamed:@"CustomDatePicker" owner:nil options:nil] lastObject];

    if ([customDatePicker isKindOfClass:[CustomDatePicker class]])
        return customDatePicker;
    else
        return nil;
}

これは、インターフェースビルダーからの私のスクリーンショットです。

ここに画像の説明を入力

私のView ControllerのviewDidAppearメソッドでは、このコードを使用してカスタムビューをロードしています

CustomDatePicker *customDatePicker = [CustomDatePicker loadCustomDatePicker];

[self.view addSubview:customDatePicker];
[self.view bringSubviewToFront:customDatePicker];

customDatePicker.frame = CGRectMake(0, 375, 320, 40);

シミュレーションのスクリーンショットは次のとおりです。

ここに画像の説明を入力

カスタム ビューのサイズは、nib ファイルで 320 x 40 に設定されています。背景は透明です。

ここに問題があります:

シーンの高さは 504 なので、私のコードは

 customDatePicker.frame = CGRectMake(0, 464, 320, 40);

しかし、これを実装すると、マップしか表示されません。(0,400)でも(0,420)でも動きません。試行錯誤して(0,375)を使いました。

視覚的には私の目的は達成されたように見えます。しかし、(0,375) が動作するはずがないのに、なぜ動作するのかわかりません。

4

1 に答える 1

1

「self.view」がどのビューであるかによって異なります。そのビューはマップのみのようです (検索バーは含まれません)。設定しませんか

customDatePicker.frame = CGRectMake(0, self.view.size.height - 40, 320, 40)

ビューの実際のサイズに依存しません (iPhone 4 と 5 では異なります)。

ところで、viewDidAppearバーを追加する奇妙な方法は、viewDidLoadそのためのものです。で追加し、viewDidLoadでフレームを設定しviewViewAppearます。

于 2013-07-29T12:31:59.053 に答える