以下代码:
self.dataTableViewController = [[DataTableViewController alloc] initWithStyle:UITableViewStylePlain];
CGRect tableViewRect = self.dataTableViewController.view.frame;
tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
//tableViewRect.size.width = 320.0f;
//tableViewRect.size.height = 613.0f;
self.dataTableViewController.view.frame = tableViewRect;
[self.view addSubview:self.dataTableViewController.view];
我的tableviewcontroller显示,一切正常,它也位于正确的位置。 但是我的桌子大小不正确。如果我取消注释size属性的两行代码,tableview将从我的uiview中消失,我不明白为什么。
一些想法?
//编辑:
好吧,这是一种奇怪的行为。 我的tableview显示我的tableview在splittableviewcontroller(左侧) self.contentSizeForViewInPopover = CGSizeMake(320.0, 704.0);
对我的popovercontroller没有任何影响。我从splittableviewcontroller模板中将其保留为默认值。如果我处于纵向模式,它总是全高。
取消注释tableViewRect.size.height = 613.0f;
有效,取消注释宽度。将我的身高设置为613px我获得了一张313px高的桌面视图。什么!?将我的身高设置为913.0f
,它在风景和肖像方面都很完美。我不明白的是,在景观中它应该只有613像素高。我想将我的popover的高度设置为与我在景观中的viewcontroller相同的高度,这样我的tableview总是高613。不知道那里发生了什么。
我的913px的桌面视图:
答案 0 :(得分:1)
您正尝试将表格视图作为另一个视图的子视图插入。然后你尝试指定一个框架。 可能发生的情况是,即使您指定了框架,您的表仍然是另一个视图的子视图,然后它将受到您最初设置的任何自动调整规则的约束。那么你有没有检查过明确设置框架与表自动调整掩码没有冲突? 特别是,您可以尝试通过为表自动调整掩码设置值
UIViewAutoresizingNone
(建议在viewDidLoad方法中执行此操作)。
答案 1 :(得分:0)
它对我有用...你的代码是在一个表视图控制器中,还是在其他一些类中?我试过这个(并且有效):
CGRect tableViewRect = self.tableView.frame;
tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
tableViewRect.size.width = 320.0f;
tableViewRect.size.height = 613.0f;
self.tableView.frame = tableViewRect;
[self.tableView setNeedsLayout];
[self.tableView setNeedsDisplay];
BTW我认为iPhone的尺寸是320 x 480,所以我不确定你为什么要在那里使用613.