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

时间:2013-10-15 20:36:26

标签: ios ios7 autorotate

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

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

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

示例:

enter image description here

uploaded my test project to 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;
}

1 个答案:

答案 0 :(得分:4)

我认为可能 Apple bug 。您可以在自己的应用“邮件”中重现它。

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

  1. 在“Mail”应用中打开邮件收件箱。 (比如,纵向)
  2. 点击撰写邮件图标(右下角)并旋转设备(横向显示)。
  3. 关闭撰写邮件,然后立即查看收件箱邮件视图。
  4. 结果:分隔线已损坏。

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

    可重复使用iOS 7.0.2。

    修改

    (代码解决方法 - 1)

    如果可能,您可以reloadData在桌面视图出现时刷新它。

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

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

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