如何设置静态分组的TableView单元格的宽度

时间:2016-11-07 21:58:59

标签: ios swift uitableview

我对Xcode和Swift开发相对较新,我对UITableViewController静态分组单元格(在iPad上)有疑问。我想要一个自然的解决方案,使单元格宽度不如整个屏幕大。 我试过这个:

override func viewDidAppear(_ animated: Bool) {
        tableView.frame = CGRect(x: 175, y: 70, width: view.bounds.width-350, height: view.bounds.height)
}

问题是这看起来非常讨厌并且在顶部和底部使用导航栏和标签栏变得棘手,但特别是因为它设置为viewDidAppear而无法正常工作,所以当使用滑动后退手势时(如在“设置”中),视图仍然以全宽显示一秒钟。

您是否知道解决此问题的其他方法?也许是一些自动布局的东西,我不知道,我已经尝试过我所知道的一切......

任何帮助将不胜感激!谢谢!

Placing a tableview in a normal ViewController grouped isn't allowed by Xcode...

1 个答案:

答案 0 :(得分:0)

正如你所说,autolayout可能是要走的路。如果您使用的是Interface Builder,那么您可以在那里设置约束。有很多信息可以帮助解决这个问题。这是一个很好的起点:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html

您应该切换到使用常规UIViewController并手动添加UITableView作为根视图的子视图。您还必须手动将视图控制器设置为表视图的委托和dataSource。然后,您就可以将表格视图放在任何您喜欢的位置。不幸的是,你将无法使用静态单元 - 但从长远来看,动态设置数据往往是更好的选择。

实现您想要的并且仍然使用UITableViewController的另一种方法是将其设置为子视图控制器,但这更加繁琐,并且在我的经验中往往更具限制性。

如果您想在代码示例中手动设置框架,那么您应该在viewDidLayoutSubviews方法中执行此操作。