奇怪的是three20的TTTableViewController框架属性

时间:2012-09-12 17:31:26

标签: iphone objective-c ios xcode three20

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

我有:

  1. UIStatusBar
  2. UINavigationController
  3. UIViewController
  4. UITabBar
  5. 为了设置所有剩余空间的TTTableViewController填充,我需要将高度设置为 460而不是367. (367 = 480-20-44-49)< / p>

    e.g。

    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 个答案:

答案 0 :(得分:2)

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

很高兴知道你何时设置框架。还要记住,我可能会离开。我的思绪现在感觉有点模糊。

答案 1 :(得分:2)

根据我的理解,只扣除状态栏的大小,即480-20 = 460.实际上状态栏是22分,但大约是

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

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

答案 2 :(得分:1)

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

您应该使用控制器的当前/解除功能来展示TTTableViewController。如果您不想包含上滑效果,那么用户将不会看到它是“不同的屏幕”,在您呈现控制器时使用布尔标志。

   [self presentModalViewController:vc animated:NO];

或者,使用不带控制器的TTTableView

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];

答案 3 :(得分:0)

就像这段代码一样。 如果使用iOS6,请获取当前设备。 如果();

-(void)viewdidLoad{

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

[self.view addsubview:tt];

}