iOS - 如何在TableViewController中设置TableView的宽度?

时间:2017-03-23 12:25:28

标签: ios objective-c xcode uitableview swift3

使用TableViewController,如何调整其中单元格的长度?

  

如您所见,细胞的长度扩展到整个细胞   显示。我怎样才能减少它?

3 个答案:

答案 0 :(得分:2)

试试这个:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES]
    [self.tableView setFrame:CGRectMake(x, y, width, height)];
}

答案 1 :(得分:1)

试试这个

viewWillAppear

中展示框架
- (void)viewWillAppear:(BOOL)animated
{
     self.view.frame = CGRectMake(0, 0, 200, 200);
    [super viewWillAppear:animated];
}

或更改

  

调用以通知视图控制器其视图即将布局   当视图的边界发生变化时,视图会调整其子视图的位置。

因此,不会在视图中显示,而是超越 willLayoutSubviews

-(void)viewWillLayoutSubviews{

    [super viewWillLayoutSubviews];

      self.view.frame = CGRectMake(0, 0, 200, 200);

}

或有效的方式

- (void)viewDidAppear:(BOOL)animated
{
 [super viewDidAppear:YES]
[self.tableView setFrame:CGRectMake(x, y, 200, 200)];
}

<强> swift3

更改viewWillAppear

中的框架
override func viewWillAppear(_ animated: Bool) {
self.view.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(200), height: CGFloat(200))
super.viewWillAppear(animated)
}

或更改

  

调用以通知视图控制器其视图即将布局   当视图的边界发生变化时,视图会调整其子视图的位置。

因此,不会在视图中显示,而是超越 willLayoutSubviews

override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
self.view.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(200), height: CGFloat(200))
}

或有效的方式

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
self.tableView.frame = CGRect(x: CGFloat(x), y: CGFloat(y), width: CGFloat(200), height: CGFloat(200))
}

答案 2 :(得分:0)

为什么需要更改宽度?

  • 如果您想在表视图左侧或右侧放置另一个视图,请尝试使用UISplitviewController。
  • 如果你想在表视图中使用单元格边距,我建议继承UITableViewCell并按以下方式设置宽度:
class MyTableViewCell: UITableViewCell {
    override func layoutSubviews() {
        super.layoutSubviews()
        self.frame.size.width = 200
    }
}