gpt4 book ai didi

ios - 如何将 View Controller 添加到 ScrollView ,但仅在 ScrollView 显示该 vc 时实例化 View Controller ?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:55 24 4
gpt4 key购买 nike

我在我的 ScrollView 中添加了两个 View Controller ,并且在两个 View Controller 上都有动画,但是这些动画应该只在 vc 显示时调用。相反,当第一个 vc 显示时,两个动画都在执行。

func setUpScrollView() {

for i in 0..<2 {
let vc = NewViewController()
self.addChildViewController(vc)
scrollView.addSubview(vc.view)
vc.didMove(toParentViewController: self)

var frame: CGRect = vc.view.frame
frame.origin.x = self.view.frame.width * CGFloat(i)
vc.view.frame = frame

self.scrollView.contentSize = CGSize(width: self.view.frame.width * CGFloat(2), height: self.view.frame.size.height)
}
}

新建 View Controller

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("calling animation") //this is called twice immediatley after for loop, but only shows one vc.
}

最佳答案

UIScrollView 不像 UITableView 那样管理内容加载,因此无论您在 ScrollView 的内容区域中放入什么,都会触发其 viewDidAppear 无论是否在可见区域,立即显示。

要决定何时开始动画,您将不得不手动跟踪 ScrollView 内容区域中实际可见的内容:

分配一个 UIScrollViewDelegate 并在其 scrollViewDidScroll() 中进行检查, ScrollView 滚动的每一帧都会调用它。

您可以使用 scrollView.contentOffsetscrollView.bounds 以及您感兴趣的 subview 的大小和坐标来确定可见性,然后在以下时间触发动画它首先变得可见。

关于ios - 如何将 View Controller 添加到 ScrollView ,但仅在 ScrollView 显示该 vc 时实例化 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com