5

我正在将 a 添加TTTableViewController到现有的UIViewController,我发现的一件奇怪的事情是frame初始化的 TTTableViewController 的属性是有线的,例如在 iOS 布局中。

我有:

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

为了设置TTTableViewController所有剩余空间的填充,我需要将高度设置为460 而不是 367。(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

我认为这取决于您何时设置框架。例如,我很确定当您在 viewDidLoad 中设置框架时,您将在考虑状态栏和其他事情之前设置它。可能还有其他类似的情况。如果您将其设置为 320:460,它将调整大小以考虑状态栏和其他内容,使其填满屏幕的其余部分。如果您将其设置为 320:367,因为您已经考虑了这些内容,它将再次调整大小并被挤压(基本上缩小了两次),使其仅填充屏幕的一部分。如果您使用的是 viewDidLoad,您可以尝试将其粘贴在另一种方法中(可能是 viewWillAppear?),或者继续使用 320:460。

很高兴知道您何时设置了框架。还要记住,我可能会走得很远。我的脑子现在感觉有点模糊。

于 2012-09-20T21:03:45.890 回答
2

据我了解,仅扣除状态栏的大小,即 480-20 = 460。实际上状态栏为 22 分,但大约为 22 分。

就像您将视图控制器添加到导航控制器或标签栏控制器时,大小会自动呈现。这里的情况也是如此,three20 会自动调整视图的大小,如果您尝试将其设置为更小,那么它的行为会有所不同。

这是一个很好的问题。快乐编码。干杯!!

于 2012-09-21T08:02:08.073 回答
1

我不会将不同视图控制器的视图添加到当前视图的主视图中。

您应该TTTableViewController使用控制器的呈现/关闭功能呈现。如果您不想包含上滑效果,因此用户不会看到它是“不同的屏幕”,请在呈现控制器时使用布尔标志。

   [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 回答