0

UINavigationController のルートビューである UIViewController に UIDatepicker を追加し、このコードを使用して Datepicker を画面の下部に配置します。

UIDatePicker *picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 216, 320, 216)];
[self.view addSubview:picker];

これにより、通常、ピッカーは画面の下部に正確に配置されますが、44p の位置がずれています。Navigationbar は正確に 44p の高さなので、これが問題だと思いますが、サブビューのように動作しない場合、フレームの高さに navbar の高さが含まれる理由がわかりません。

簡単な方法は 44 を減算することですが、固定数のないソリューションを探しています。それを実装する方法はありますか、ビューにナビゲーションバーの高さが含まれている理由を誰かが説明してもらえますか?

4

5 に答える 5

1

問題を解決するには、ナビゲーション バーの半透明のプロパティをYESに設定します。

元:

self.navigationControllerInstance.navigationBar.translucent = YES;
于 2013-04-18T11:39:21.797 に答える
0

あなたの UIViewController は UINavigationController のルート ビューであるため、暗黙的にその境界に navigationBar が含まれていると思います。

プログラムでフレームを取得するには、次を使用できます。

CGRect navframe = [[self.navigationController navigationBar] frame];

于 2013-04-18T11:38:23.967 に答える
0

ディメンションをハードコーディングしない方がよいでしょう。このコードを試してください:

UIDatePicker *picker = [[UIDatePicker alloc] init];
CGRect pickerFrame = CGRectMake(0, CGRectGetHeight(self.view.bounds) - CGRectGetHeight(picker.bounds), CGRectGetWidth(picker.bounds), CGRectGetHeight(picker.bounds));
[picker setFrame:pickerFrame];
[self.view addSubview:picker];

これは動作し、datepickers の高さが常に 216 であることを想定していません。これは将来の iOS 実装で変更される可能性があるため、実行時にサイズを確認することをお勧めします。

于 2013-04-18T11:47:29.023 に答える