我在现有的TTTableViewController
中添加UIViewController
,我发现一个奇怪的事情是初始化的TTTableViewController的frame
属性是有线的,例如在iOS布局中。
我有:
UIStatusBar
UINavigationController
UIViewController
UITabBar
为了设置所有剩余空间的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
答案 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];
}