iOS 9、Xcode 7、Swift 2.2
我有一个包含一个 UIViewController 的 Storyboard,而后者又包含一个 UITableView。
UITableView 使用约束固定在 UIViewController 视图的边缘。
设计要求
当应用程序在 iPad 上以全屏模式使用时(即水平和垂直尺寸类别的常规),tableview 的边距需要更改,具体取决于 tableview 的可用宽度。实际上,纵向时,边距应为 100 点,但在横向环境中为 200 点。tableview 需要占据整个视图区域以提高可用性(例如滚动,在视图中的任何位置点击手势。)
当前方法
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
{
let margins: UIEdgeInsets
if (tableView.bounds.size.width < kWidthThreshold) {
margins = UIEdgeInsetsMake(0, 100, 0, 100)
} else {
margins = UIEdgeInsetsMake(0, 200, 0, 200)
}
cell.separatorInset = margins
cell.layoutMargins = margins
}
问题
应用启动后,视图正确显示。设备旋转会导致单元格遵守设备方向的正确边距(或者更准确地说,更改视图宽度)。
但是,如果我然后滚动 tableview,新出现的单元格不遵守边距。他们的布局被打破了,显然是随机的。
问题
我应该做其他事情来处理利润的变化吗?
在这种情况下,我应该什么时候在 tableview 上调用 reloadData?