1

我创建了一个像这样的表格视图

@interface RootViewController : UITableViewController{

}

现在我想在显示之前更改表格视图的原点和大小。

我怎样才能改变它?

编辑 :

- (id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    self.tableView.frame=CGRectMake(50, 210, self.view.frame.size.width, self.view.frame.size.height);
    return self;
}

现在我面临的问题是我设置了以下代码。现在表格视图仍然从我的视图控制器(0,0)的顶部位置显示,而不是根据我的 x,y 位置。但是如果我将样式更改为组或普通它只是正常发生。

4

3 回答 3

6

看起来您已经创建了一个新tableView的,而不是尝试移动 InterfaceBuilder 为您创建的现有的。但是由于您没有将新的添加tableView到视图层次结构中,因此您看不到新的,并且您还没有删除原始的...

相反,只需移动原始的 tableView。在您rootViewControllerviewWillAppear:方法中,执行以下操作:

-(void)viewWillAppear:(BOOL)animated
{
    self.tableView.frame = CGRectMake(0, 310, self.view.frame.size.width,200);
}
于 2012-04-18T15:22:21.630 回答
3

你可能会得到属性 * tableView *来做到这一点

tableView.frame = xxxxxx;

但我认为你只需要一个 UIViewController 包含一个 UITableView

UITableView tableView = [[UITableView alloc] initWithFrame:(**the size you want**)];
[self.view addSubView:tableView];
于 2012-04-18T14:51:44.210 回答
1

如果您使用 StoryBoard 并且设置了约束。reloadData 将重置您将框架设置为的任何内容。相反,您应该修改约束。您可以通过创建一个出口然后更改常量来做到这一点。例如,下面我将约束变量链接到顶部约束,并通过将常量设置为 -60,将其向上移动。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableConstraint;

_tableConstraint.constant = -60.;
于 2014-06-24T18:00:02.030 回答