4

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

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

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

例子:

在此处输入图像描述

我已将我的测试项目上传到 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;
}
4

1 回答 1

4

我认为这可能是一个Apple 错误。您可以在他们自己的应用程序“邮件”中重现它。

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

  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];
}
于 2013-10-15T20:57:50.670 回答