所以我正在使用这个Github包:https://github.com/jakespracher/Snapchat-Swipe-View
我有一个问题。应用程序加载后,viewDidLoad
和viewDidAppear
仅运行一次。每次let left = storyboard.instantiateViewControllerWithIdentifier("left")
出现在屏幕上时,如何运行代码?
答案 0 :(得分:1)
我相信viewWillAppear
方法每次都会运行。否则你可以使用viewDidLayoutSubviews
。
答案 1 :(得分:1)
Snapchat-Swipe-View一次将所有viewControllers和视图加载到SnapContainerViewController的scrollView中。
所有viewControllers都是SnapContainerViewController的childViewController。
因此
所有viewControllers将立即收到viewDidLoad和viewDidAppear
从技术上讲,所有的viewControllers都已经出现了#34;国家,它不会打电话给#34; viewDidAppear"再次在" viewDidDisappear"
可以从滚动事件中识别分页更改(将视图切换到屏幕上)。
识别哪个viewController在屏幕上的示例(对于索引为0,1,2的水平滚动视图) 垂直scrollView的类似处理。
只需在SnapContainerViewController.swift
中添加以下回调方法即可extension SnapContainerViewController: UIScrollViewDelegate {
func scrollViewDidEndDecelerating(scrollView: UIScrollView){
let fullWidth = scrollView.frame.size.width
let pageNo: NSInteger = lround(Double(scrollView.contentOffset.x / fullWidth))
print("page is shown:", pageNo)
}
答案 2 :(得分:0)
如您所说,加载应用时会加载每个ViewController
,视图会被放大,您只能在视图控制器之间滚动。因此,您错过了UIViewController
课程的好处。你最好的选择是:
UIScrollView
的中心来获取屏幕位置,请参阅Understanding UIScrollView。