Swift3 UIPAGE控制指示点
我有一个页面控制器,指示点消失了!我想在最后一页就把它们消失! 我还有另一个问题 我想从底部移动这些点+100! 我的最后一个问题是:哪种方法可以帮助我在页面视图控制器的任何页面中编写任何方法?(我想在用户看到所有页面时控制这些页面) 这是我的密码Swift3 UIPAGE控制指示点,swift3,uipageviewcontroller,Swift3,Uipageviewcontroller,我有一个页面控制器,指示点消失了!我想在最后一页就把它们消失! 我还有另一个问题 我想从底部移动这些点+100! 我的最后一个问题是:哪种方法可以帮助我在页面视图控制器的任何页面中编写任何方法?(我想在用户看到所有页面时控制这些页面) 这是我的密码 class pageVC : UIPageViewController , UIPageViewControllerDataSource , UIPageViewControllerDelegate { let pageVC = UIPageC
class pageVC : UIPageViewController , UIPageViewControllerDataSource , UIPageViewControllerDelegate {
let pageVC = UIPageControl()
lazy var VCArr : [UIViewController] = {
return [self.VCInstance(name : "FirtsVC"),
self.VCInstance(name : "SecondVC"),
self.VCInstance(name :"ThirdVC"),
self.VCInstance(name :"FourthVC"),
self.VCInstance(name :"FivethVC")]
}()
private func VCInstance(name : String) -> UIViewController {
return UIStoryboard(name : "Main" , bundle : nil).instantiateViewController(withIdentifier: name)
}
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
if VCArr.first != nil {
print("first Page Reached!")
}
if let firstVC = VCArr.first {
setViewControllers([firstVC] , direction: .forward , animated: true, completion: nil)
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let pageVC = UIPageControl()
for view in self.view.subviews {
if view is UIScrollView {
let pageControl = UIPageControl()
pageControl.pageIndicatorTintColor = UIColor.gray
pageControl.currentPageIndicatorTintColor = UIColor.white
pageControl.backgroundColor = UIColor.darkGray
pageControl.numberOfPages = VCArr.count
pageControl.center = self.view.center
self.view.addSubview(pageControl)
pageControl.layer.position.y = self.view.frame.height - 100;
}else if view is UIPageControl{
view.backgroundColor = UIColor.clear
pageVC.numberOfPages = 5
pageVC.center = self.view.center
pageVC.layer.position.y = self.view.frame.height - 180 ;
}
}
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex-1
guard previousIndex >= 0 else {
return nil
}
guard VCArr.count > previousIndex else {
return nil
}
return VCArr[previousIndex]
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex+1
guard nextIndex < VCArr.count
else {
return nil
}
guard VCArr.count > nextIndex else {
return nil
}
if nextIndex == VCArr.count{
pageVC.isHidden = false
}
return VCArr[nextIndex]
}
public func presentationCount(for pageViewController: UIPageViewController) -> Int{
return VCArr.count
}
public func presentationIndex(for pageViewController: UIPageViewController) -> Int{
guard let firstViewController = viewControllers?.first , let firstViewControllerIndex = VCArr.index(of: firstViewController) else {
return 0
}
let firstIndex = firstViewControllerIndex - 1
guard firstIndex >= VCArr.count else {
return VCArr.count
}
return firstViewControllerIndex
}
public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if (VCArr.last!.isViewLoaded)
{
print("It is Done!!!")
}
}
class pageVC:UIPageViewController、UIPageViewControllerDataSource、UIPageViewControllerDelegate{
设pageVC=UIPageControl()
惰性变量VCArr:[UIViewController]={
返回[self.VCInstance(名称:“FirtsVC”),
self.VCInstance(名称:“SecondVC”),
self.VCInstance(名称:“ThirdVC”),
self.VCInstance(名称:“FourthVC”),
self.VCInstance(名称:“FivethVC”)]
}()
private func VCInstance(名称:String)->UIViewController{
返回UIStoryboard(名称:“Main”,捆绑包:nil)
}
重写func viewDidLoad(){
super.viewDidLoad()
self.dataSource=self
self.delegate=self
如果VCArr.first!=零{
打印(“到达第一页!”)
}
如果让firstVC=VCArr.first{
SetViewController([firstVC],方向:。正向,动画:true,完成:nil)
}
}
重写func viewdilayoutsubviews(){
super.viewDidLayoutSubviews()
设pageVC=UIPageControl()
用于在self.view.subview中查看{
如果视图是UIScrollView{
让pageControl=UIPageControl()
pageControl.pageIndicatorTintColor=UIColor.gray
pageControl.currentPageIndicatorTintColor=UIColor.white
pageControl.backgroundColor=UIColor.darkGray
pageControl.numberOfPages=VCArr.count
pageControl.center=self.view.center
self.view.addSubview(页面控件)
pageControl.layer.position.y=self.view.frame.height-100;
}否则,如果视图是UIPageControl{
view.backgroundColor=UIColor.clear
pageVC.numberOfPages=5
pageVC.center=self.view.center
pageVC.layer.position.y=self.view.frame.height-180;
}
}
}
public func pageViewController(uPageViewController:UIPageViewController,viewController在viewController:UIViewController之前)->UIViewController{
guard let viewControllerIndex=VCArr.index(of:viewController)else{
归零
}
设previousIndex=viewControllerIndex-1
guard previousIndex>=0其他{
归零
}
guard VCArr.count>上一个索引else{
归零
}
返回VCArr[以前的索引]
}
public func pageViewController(uPageViewController:UIPageViewController,viewController后的viewController:UIViewController)->UIViewController{
guard let viewControllerIndex=VCArr.index(of:viewController)else{
归零
}
设nextIndex=viewControllerIndex+1
警卫下一个索引nextIndex else{
归零
}
如果nextIndex==VCArr.count{
pageVC.ishiden=false
}
返回VCArr[nextIndex]
}
public func presentationCount(对于pageViewController:UIPageViewController)->Int{
返回VCArr.count
}
公共函数表示索引(对于pageViewController:UIPageViewController)->Int{
guard让firstViewController=viewControllers?首先,让firstViewControllerIndex=VCArr.index(of:firstViewController)else{
返回0
}
设firstIndex=firstViewControllerIndex-1
guard firstIndex>=VCArr.count else{
返回VCArr.count
}
返回firstViewControllerIndex
}
public func pageViewController(pageViewController:UIPageViewController,didFinishAnimating finished:Bool,PreviousViewController:[UIViewController],transitionCompleted completed:Bool){
如果(VCArr.last!.isViewLoaded)
{
打印(“完成!!!”)
}
}
}以下是答案
class pageVC : UIPageViewController , UIPageViewControllerDataSource , UIPageViewControllerDelegate {
let pageVC = UIPageControl()
lazy var VCArr : [UIViewController] = {
return [self.VCInstance(name : "FirtsVC"),
self.VCInstance(name : "SecondVC"),
self.VCInstance(name :"ThirdVC"),
self.VCInstance(name :"FourthVC"),
self.VCInstance(name :"FivethVC")]
}()
private func VCInstance(name : String) -> UIViewController {
return UIStoryboard(name : "Main" , bundle : nil).instantiateViewController(withIdentifier: name)
}
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
if launchedBefore {
print("Not first launch!")
print("Should Launch MainTabBarController!")
/////Not First Time launch! reach mainTabBarController//////////
} else {
print("First launch, setting UserDefault.")
UserDefaults.standard.set(true, forKey: "launchedBefore")
}
//////Lock Rotation/////////
var shouldAutorotate: Bool {
return false
}
var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()
}
func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [UIInterfaceOrientationMask.portrait ]
}
///////Lock Roration//////
if VCArr.first != nil {
print("first Page Reached!")
}
if let firstVC = VCArr.first {
setViewControllers([firstVC] , direction: .forward , animated: true, completion: nil)
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let view = self.pageVC.currentPage
for view in self.view.subviews {
if view is UIScrollView {
let pageVC = UIPageControl()
self.pageVC.pageIndicatorTintColor = UIColor.lightText
self.pageVC.currentPageIndicatorTintColor = UIColor.white
self.pageVC.backgroundColor = UIColor.white
self.pageVC.numberOfPages = VCArr.count
self.pageVC.center = self.view.center
self.view.addSubview(self.pageVC)
pageVC.layer.position.y = self.view.frame.height - 150;
}else if view is UIPageControl{
view.backgroundColor = UIColor.clear
pageVC.numberOfPages = 5
pageVC.center = self.view.center
pageVC.layer.position.y = self.view.frame.height - 100 ;
}
}
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex-1
guard previousIndex >= 0 else {
return nil
}
guard VCArr.count > previousIndex else {
return nil
}
return VCArr[previousIndex]
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex+1
guard nextIndex < VCArr.count
else {
return nil
}
guard VCArr.count > nextIndex else {
return nil
}
return VCArr[nextIndex]
}
public func presentationCount(for pageViewController: UIPageViewController) -> Int{
return VCArr.count
}
public func presentationIndex(for pageViewController: UIPageViewController) -> Int{
guard let firstViewController = viewControllers?.first , let firstViewControllerIndex = VCArr.index(of: firstViewController) else {
return 0
}
let firstIndex = firstViewControllerIndex - 1
guard firstIndex >= VCArr.count else {
return VCArr.count
}
return firstViewControllerIndex
}
public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
self.pageVC.currentPage = pageViewController.viewControllers!.first!.view.tag
if(viewControllers!.first?.view.tag == 4 ) {
if (VCArr.last!.isViewLoaded)
{
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "FivethVC")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController
print("Last Page Reached!!!")
}
}
}
}
class pageVC:UIPageViewController、UIPageViewControllerDataSource、UIPageViewControllerDelegate{
设pageVC=UIPageControl()
惰性变量VCArr:[UIViewController]={
返回[self.VCInstance(名称:“FirtsVC”),
self.VCInstance(名称:“SecondVC”),
self.VCInstance(名称:“ThirdVC”),
self.VCInstance(名称:“FourthVC”),
self.VCInstance(名称:“FivethVC”)]
}()
private func VCInstance(名称:String)->UIViewController{
返回UIStoryboard(名称:“Main”,捆绑包:nil)
}
重写func viewDidLoad(){
super.viewDidLoad()
self.dataSource=self
self.delegate=self
让launchedBefore=UserDefaults.standard.bool(forKey:“launchedBefore”)
如果在发射之前{
打印(“不是第一次启动!”)
打印(“应启动MainTabBarController!”)
/////不是第一次启动!到达MainTabbar控制器//////////
}否则{
打印(“第一次启动,设置UserDefault。”)
UserDefaults.standard.set(true,forKey:“launchedBefore”)
}
//////锁定旋转/////////
var应自动旋转:布尔{
返回错误
}
var支持的接口方向:UIInterfaceOrientationTask{
返回。肖像
}
func VIEW将出现(uu动画:Bool){
超级。视图将显示(动画)
let value=UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(值,forKey:“方向”)
UIViewController.attemptRotationToDeviceOrientation()
}
func支持的接口方向()->UIInterfaceOrientationTask{
返回[UIInterfaceOrientationMask.grait]
}
///////锁定旋转//////
如果VCArr.first!=零{
打印(“到达第一页!”)
}
如果让firstVC=VCArr.first{
SetViewController([firstVC],方向:。正向,动画:true,完成:nil)
}
}
覆盖f