在旋转时调整呈现视图的大小

我在视图控制器中处理旋转时遇到问题。

当视图位于最顶层并且手机旋转时,它会正确适应。

当视图控制器以模态方式呈现其上并且设备被旋转时,当用户返回时,视图控制器未完全更新以进行旋转。 我似乎遇到的最大问题是分隔线不会扩展以填充整个宽度。

例:

在此处输入图像描述

我已将我的测试项目上传到GitHub ; 你可以从https://github.com/tewha/ResizeOnRotate.git克隆它。

我根本没有代码处理轮换。 我的理解是,这应该是全自动的。 为了使这项工作正常,我错过了什么?

编辑:

受以下答案的启发,一个简单的解决方法:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; UITableViewCellSeparatorStyle separatorStyle = self.tableView.separatorStyle; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.separatorStyle = separatorStyle; } 

我想这可能是一个Apple bug 。 您可以在自己的应用程序“ 邮件 ”中重现它。

在“邮件”应用程序中重现的步骤 –

  1. 在“邮件”应用中打开邮件收件箱。 (比如,纵向)
  2. 点击撰写邮件图标(右下角)并旋转设备(横向显示)。
  3. 关闭撰写邮件并立即查看收件箱邮件视图。

结果 :分隔线已断开。

用户的解决方法:在消息收件箱中向下和向上滚动(导致显示刷新)。

可重复生成iOS 7.0.2。

编辑

(代码解决方法 – 1)

如果可能,您可以重新reloadData以在出现时刷新tableview。

 - (void)viewWillAppear:(BOOL)animated { [self.tableView reloadData]; } 

代码解决方法 – 2(仅重新加载可见单元格)

 - (void)viewWillAppear:(BOOL)animated { NSArray *refreshCells = [self.tableView indexPathsForVisibleRows]; [self.tableView reloadRowsAtIndexPaths:refreshCells withRowAnimation:UITableViewRowAnimationNone]; }