UIScrollView在横向模式下意外的内容位移

时间:2012-12-11 15:53:12

标签: uiscrollview height offset

我'遇到了一个绝对奇怪的问题,我不知道如何解决这个问题,现在已经做了两天不间断的工作(除了吃饭,睡觉,喝咖啡和吸烟)。 / p>

我有什么:

我的视图控制器中有UIScrollView,包含一定数量的文本字段和UICollectionView。使用按钮,我打开另一个视图控制器,用于向集合视图添加新数据。添加新数据项后返回我的第一个视图控制器,我在invalidateIntrinsicContentsizeUIScrollView上调用UICollectionView来调整它们的大小以适应其内容(我使用Autolayout和让他们两个拥抱他们的内容)。在这两种观点中,我都实现了这些方法,以便很好地适应他们的内容,而且这部分工作得很好。

我的问题是什么:

如果我按照上述方式向UICollectionView添加数据,而如果我在横向模式下,则会出现问题:回到初始视图控制器后并更新内在内容大小,我的 UICollectionView 的内容被取代 - 以这样的方式移位,即内容的滚动位置{{ 1}}在切换到数据添加视图之前,现在变得像固定内容偏移。如果我现在向上滚动,在切换到数据添加视图控制器之前,我可以达到内容的最大位置 - 通过滚动到 - 。

图片(每个人都喜欢):

为了说明这种情况在某种程度上难以解释,我附上了两张照片。红色是滚动视图的整个内容区域,深绿色是内容,其中两者重叠的颜色是橄榄色。 UIScrollView的可见部分显示在突出显示的边界区域中。

在更新数据之前,内容应该是:

Normal

更新数据和更新用户界面后,内容会被前滚动位置/ UIScrollView取代:

Not Normal

请帮我解决这些奇怪的事情。不幸的是,我有一个紧迫的截止日期,需要继续该项目。然而,我真的不知道如何解决这个问题,甚至不知道是什么导致它 - 我完全没有线索。

1 个答案:

答案 0 :(得分:0)

尽管我还不知道是什么原因引起了我的问题所描述的问题,但我发现它至少以某种方式修复了这些症状:

如上所述,切换回包含错误UIViewController的{​​{1}}时发生的不需要的内容位移等于切换前UIScrollView的{​​{1}}到另一个场景。

知道了这一点,我在contentOffset消失后将UIscrollView设置为零。

contentOffset

当视图重新出现时,我向下滚动到相关UIViewController底部新添加的内容:

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    [self.scrollView setContentOffset: CGPointZero];
}

希望这可以帮助任何遇到同样问题的人。