加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 定向更改后UITableView布局中的错误

发布时间:2020-12-15 02:00:41 所属栏目:百科 来源:网络整理
导读:我有一个基于自动布局(约束)的应用程序,并注意到方向更改后的表视图有问题。复制步骤如下(我有一个非常基本的复制应用程序 – 一个tableview和一个添加按钮,添加一个新的项目)。 将您的应用程序旋转到“风景”模式,以便现在桌面是风景。 将项目添加到表格
我有一个基于自动布局(约束)的应用程序,并注意到方向更改后的表视图有问题。复制步骤如下(我有一个非常基本的复制应用程序 – 一个tableview和一个添加按钮,添加一个新的项目)。

>将您的应用程序旋转到“风景”模式,以便现在桌面是风景。
>将项目添加到表格视图,请参见下面的1
>回转到纵向,桌面现在将浮动在水平平移(就像滚动浏览器的内容大小是横向),参见[2]

1代码添加

- (IBAction)onAdd:(id)sender {
    count ++;
    [self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:count-1 inSection:0]] withRowAnimation:UITableViewRowAnimationBottom];
}

[2]浮动表视图

关于如何解决这个问题的任何想法?另外,如何知道这是已知问题还是应该向苹果报告?

解决方法

我觉得这是一个bug;如果您将项目转换为自动布局,并设置适当的调整大小面罩,则一切正常。你应该提出一个错误,特别是因为你有一个简单的示例项目,它很好地重现。

你的情况发生在你怀疑的情况下 – 滚动视图的内容视图保持在横向宽度,即使视图本身已经调整为纵向尺寸,所以你突然获得水平拖动的能力。

幸运的是有相当简单的解决方法。我没有成功地尝试了setNeedsLayout或setNeedsUpdateConstraints的各种组合,但是您可以实现以下两种解决方案之一:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
}

要么,

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    CGSize contentSize = self.tableView.contentSize;
    contentSize.width = self.tableView.bounds.size.width;
    self.tableView.contentSize = contentSize;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读