我'遇到了一个绝对奇怪的问题,我不知道如何解决这个问题,现在已经做了两天不间断的工作(除了吃饭,睡觉,喝咖啡和吸烟)。 / p>
我有什么:
我的视图控制器中有UIScrollView
,包含一定数量的文本字段和UICollectionView
。使用按钮,我打开另一个视图控制器,用于向集合视图添加新数据。添加新数据项后返回我的第一个视图控制器,我在invalidateIntrinsicContentsize
和UIScrollView
上调用UICollectionView
来调整它们的大小以适应其内容(我使用Autolayout和让他们两个拥抱他们的内容)。在这两种观点中,我都实现了这些方法,以便很好地适应他们的内容,而且这部分工作得很好。
我的问题是什么:
如果我按照上述方式向UICollectionView
添加数据,而如果我在横向模式下,则会出现问题:回到初始视图控制器后并更新内在内容大小,我的 UICollectionView
的内容被取代 - 以这样的方式移位,即内容的滚动位置{{ 1}}在切换到数据添加视图之前,现在变得像固定内容偏移。如果我现在向上滚动,在切换到数据添加视图控制器之前,我可以达到内容的最大位置 - 通过滚动到 - 。
图片(每个人都喜欢):
为了说明这种情况在某种程度上难以解释,我附上了两张照片。红色是滚动视图的整个内容区域,深绿色是内容,其中两者重叠的颜色是橄榄色。 UIScrollView
的可见部分显示在突出显示的边界区域中。
在更新数据之前,内容应该是:
更新数据和更新用户界面后,内容会被前滚动位置/ UIScrollView
取代:
请帮我解决这些奇怪的事情。不幸的是,我有一个紧迫的截止日期,需要继续该项目。然而,我真的不知道如何解决这个问题,甚至不知道是什么导致它 - 我完全没有线索。
答案 0 :(得分:0)
尽管我还不知道是什么原因引起了我的问题所描述的问题,但我发现它至少以某种方式修复了这些症状:
如上所述,切换回包含错误UIViewController
的{{1}}时发生的不需要的内容位移等于切换前UIScrollView
的{{1}}到另一个场景。
知道了这一点,我在contentOffset
消失后将UIscrollView
设置为零。
contentOffset
当视图重新出现时,我向下滚动到相关UIViewController
底部新添加的内容:
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.scrollView setContentOffset: CGPointZero];
}
希望这可以帮助任何遇到同样问题的人。