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?