【问题标题】:Change TableView Size programmatically in code在代码中以编程方式更改 TableView 大小
【发布时间】:2015-12-31 02:57:22
【问题描述】:

我想在代码中而不是在主 StoryBoard 中更改整个表视图大小(x、y、宽度、高度)。 我在情节提要中制作了没有布局的表格视图。 我试过这个:

@IBOutlet weak var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.frame.size.width = self.view.frame.size.width
        tableView.frame.size.height = self.view.frame.size.height
        tableView.reloadData()
}

但是没有用

【问题讨论】:

  • 在 viewwillappear/viewdidappear 中做而不是在视图中加载
  • 另外,表格视图的初始大小是多少?

标签: ios swift uitableview


【解决方案1】:

viewDidAppear试试这个:

tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)

【讨论】:

  • 你在storyboard的tableView中添加了约束吗?
【解决方案2】:

CGRect 是一个结构,这意味着每次访问frame 属性时,都会获得矩形的副本。更改矩形中的字段只会影响本地副本,而不影响视图使用的值。

因此,为了更新frame 属性的任何字段,您需要一次全部设置:

var frame = tableView.frame
frame.size.width = ...
frame.size.height = ...
tableView.frame = frame

假设没有其他因素会影响视图的框架(自动布局约束、自动调整掩码),这会将框架更新为新值。

另外请注意viewDidLoad 可能不是设置框架的最佳位置,因为这些属性可能尚未初始化。例如,viewWillAppear 是一个更好的地方。

【讨论】:

  • 我现在试过了:var frame = tableView.frame; frame.size.width = self.view.frame.size.width; frame.size.height = self.view.frame.size.height; tableView.frame = frame; 但它没有用..
  • self.view.frame 是否具有预期值?
猜你喜欢
  • 1970-01-01
  • 2013-09-06
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2012-06-01
相关资源
最近更新 更多