Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:UIPageControl在iOS 9中自动滑动_Ios_Swift_Xcode_Uicollectionview_Uipagecontrol - Fatal编程技术网

Swift:UIPageControl在iOS 9中自动滑动

Swift:UIPageControl在iOS 9中自动滑动,ios,swift,xcode,uicollectionview,uipagecontrol,Ios,Swift,Xcode,Uicollectionview,Uipagecontrol,我将ImageView放在UICollectionViewCell中,并在其下方放置了一个页面控件。两者都通过编程方式连接 但是,我希望自动刷卡(比如每5秒一次),图像应该自动刷卡。如果用户手动刷卡,也应该自动刷卡。另外,当页面控件到达最后一个时,它应该以第一个开始 下面是我使用的代码: var offersImages: [UIImage] = [ //Array of Banners UIImage(named: "default-banner.png")!,

我将ImageView放在UICollectionViewCell中,并在其下方放置了一个页面控件。两者都通过编程方式连接

但是,我希望
自动刷卡(比如每5秒一次),图像应该自动刷卡。
如果用户手动刷卡,也应该自动刷卡。另外,当页面控件到达最后一个时,它应该以第一个开始

下面是我使用的代码:

 var offersImages: [UIImage] = [     //Array of Banners
        UIImage(named: "default-banner.png")!,
        UIImage(named: "default-banner.png")!,
        UIImage(named: "default-banner.png")!,
        UIImage(named: "default-banner.png")!,
    ]

 override func viewDidLoad() {
        super.viewDidLoad()

        self.objPageControl.currentPage = 0
        self.objPageControl.numberOfPages = self.offersImages.count
    }

 func scrollViewDidScroll(scrollView: UIScrollView) {
        let pageWidth : CGFloat = self.objBannerCollectionView.frame.size.width
        self.objPageControl.currentPage = Int(self.objBannerCollectionView.contentOffset.x/pageWidth)
    }  

如何在Swift中实现这一点?

请参考以下链接,它将有助于解决您的问题


请参考以下链接,它将有助于解决您的问题


下面的代码解决了我的问题:

   //MARK:- viewDidLoad
    override func viewDidLoad() {
        super.viewDidLoad()

        . . .

         _ = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(moveToNextPage), userInfo: nil, repeats: true)
    }

     func moveToNextPage (){
        let pageWidth:CGFloat = self.objBannerCollectionView.frame.width
        let maxWidth:CGFloat = pageWidth * 4
        let contentOffset:CGFloat = self.objBannerCollectionView.contentOffset.x

        var slideToX = contentOffset + pageWidth

        if  contentOffset + pageWidth == maxWidth {
                slideToX = 0
        }

        self.objBannerCollectionView.scrollRectToVisible(CGRect(x:slideToX, y:0, width:pageWidth, height:self.objBannerCollectionView.frame.height), animated: true)
    }

下面的代码解决了我的问题:

   //MARK:- viewDidLoad
    override func viewDidLoad() {
        super.viewDidLoad()

        . . .

         _ = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(moveToNextPage), userInfo: nil, repeats: true)
    }

     func moveToNextPage (){
        let pageWidth:CGFloat = self.objBannerCollectionView.frame.width
        let maxWidth:CGFloat = pageWidth * 4
        let contentOffset:CGFloat = self.objBannerCollectionView.contentOffset.x

        var slideToX = contentOffset + pageWidth

        if  contentOffset + pageWidth == maxWidth {
                slideToX = 0
        }

        self.objBannerCollectionView.scrollRectToVisible(CGRect(x:slideToX, y:0, width:pageWidth, height:self.objBannerCollectionView.frame.height), animated: true)
    }

使用NSTimer控制时间使用NSTimer控制时间