5

TTTableViewController既存のに を追加していますUIViewControllerが、奇妙なことの 1 つframeは、初期化された TTTableViewController のプロパティが、iOS レイアウトなどで配線されていることです。

私は持っている:

  1. UIStatusBar
  2. UINavigationController
  3. UIViewController
  4. UITabBar

TTTableViewController残りのすべてのスペースに塗りつぶしを設定するには、高さを367 ではなく 460 に設定する必要があります(367 = 480-20-44-49)。

例えば

self.tableViewController.view.frame = CGRectMake(0, 0, 320, 460.0f);

それ以外の

self.tableViewController.view.frame = CGRectMake(0, 0, 320, 367.0f);

なぜそうなのですか?

*明確化のための編集: TTViewController の上にある TTTableViewController ([self.view addSubview:self.tableViewController.view]; を使用) を意味し、self.tableViewController.view.frame = CGRectMake(0, 0, 320, 460.0f); 367の代わりに

4

4 に答える 4

2

私の理解では、ステータス バーのサイズのみが差し引かれます。つまり、480-20 = 460 です。実際のステータス バーは 22 ポイントですが、その約です。

ビューコントローラーをナビゲーションコントローラーまたはタブバーコントローラーに追加すると、サイズが自動レンダリングされるのと同じです。ここでも同じです。three20 は自動的にビューのサイズを調整し、それよりも小さいサイズに設定しようとすると、動作が異なります。

それはいい質問ですが。ハッピーコーディング。乾杯!!

于 2012-09-21T08:02:08.073 に答える
2

フレームをいつセットするかにもよると思います。たとえば、viewDidLoadでフレームを設定すると、ステータスバーやその他のものが考慮される前に設定されます。このようなケースは他にもあるかもしれません。320:460 に設定すると、後でステータス バーやその他のものを考慮してサイズが変更され、画面の残りの部分を埋めます。すでにそのことを考慮して 320:367 に設定すると、サイズが再度変更されて押しつぶされ (基本的には 2 回縮小されます)、画面の一部だけが表示されます。viewDidLoad を使用している場合は、別のメソッド (おそらく viewWillAppear?) に貼り付けるか、320:460 を使用し続けることができます。

フレームを正確に設定したときに知っておくとよいでしょう。また、私が道を外れている可能性があることにも注意してください。今、私の心は少しぼんやりしている。

于 2012-09-20T21:03:45.890 に答える
1

別のView Controllerのビューを現在のビューのメインビューに追加しません。

TTTableViewControllerコントローラーの present / disconnect 関数を使用して を提示する必要があります。スライドアップ効果を含めたくない場合は、ユーザーが「別の画面」であることがわかりません。コントローラーを提示するときにブール値フラグを使用します。

   [self presentModalViewController:vc animated:NO];

TTTableViewまたは、コントローラーなしでa を使用します。

tableView = [[TTTableView alloc] initWithFrame:CGRectMake(0, kScrollViewHeight + kSignupLabelHeight, 320, kTableViewHeight) style:UITableViewStyleGrouped];
[tableView setBackgroundColor:[UIColor clearColor]];

tableView.delegate = self;
tableView.dataSource = [TTSectionedDataSource dataSourceWithObjects:
                                 @"",
                                 [TTTableTextItem itemWithText:@"Sign Up" URL:@"tt://signupController"],
                                 nil];
[self.view addSubview:tableView];
于 2012-09-21T21:13:23.317 に答える
0

このコードのように。iOS6 を使用する場合は、現在のデバイスを取得します。もしも();

-(void)viewdidLoad{

TTTableViewController *tt = [TTTableViewController new]; CGRect frame = [UIScreen mainScreen].bounds; tt.frame = frame; tt.delegate = self;

[self.view addsubview:tt];

}

于 2012-09-25T03:53:03.860 に答える