【发布时间】:2023-03-15 22:53:01
【问题描述】:
我有一个UIViewController 子类作为情节提要中的一个场景,其中包含一个包含各种子视图的UIScrollView。其中一个子视图是UIButton,它进入另一个场景UIViewController 子类。当我从视图返回时(将UIViewController 从导航控制器堆栈中弹出),我发现滚动视图的原点发生了某种变化,尽管contentsize 和contentoffset 似乎是正确的。
同样有趣的是,该应用程序有一个标签栏,当我离开并返回该视图时,滚动视图被正确设置为偏移量为 (0, 0)。
这个过程基本上不涉及任何代码,因为它几乎都在情节提要中。由于我对使用情节提要相当陌生,因此我认为我做错了什么,尽管我不知道是什么。关于那可能是什么的任何想法?也许是规模问题或限制?
【问题讨论】:
-
我在展示 VC 时遇到了与 UICollectionView 类似的问题,但仍未解决
-
您是否尝试在 viewWillAppear 中设置原点?那是控制器从弹出窗口返回的地方。它不会在第二次(或第三次......)加载时看到 viewDidLoad。
-
好吧,我在
viewWillAppear中尝试了以下操作:self.scrollView.frame = CGRectMake(self.scrollView.frame.origin.x, self.scrollView.frame.origin.y - y, self.scrollView.frame.size.width, self.scrollView.frame.size.height);(其中 y 是新的“原点”高度),但似乎没有效果。还有其他方法可以设置原点吗? -
您是否在情节提要中使用自动布局?如果是这样,设置滚动视图的框架将不起作用。您需要设置相关的约束。在您的情况下,也许尝试将滚动视图的顶部固定到其包含视图。
-
斯蒂芬,谢谢你的回复。正如你所说,我尝试固定滚动视图,但是滚动视图已经有很多“顶部空间”约束必须是自动生成的(超过 100 个!)。我想我必须删除它们或至少降低它们的优先级,这似乎相当痛苦。最后,我使用了stackoverflow.com/questions/12580434/… 中答案的变体。
标签: ios cocoa-touch uiscrollview storyboard