2017-03-08 2 views
1

私は自分のアプリケーションでscrollviewを使って自動スクロールバナーを作成しました。スクロールビューには3つの画像が追加されていますので、最初の画像からスクロールして最後の画像にスクロールさせ、スクロールを続行してこの処理を繰り返す必要があります。最後の画像に達した後、最初のページからスクロールスクロールをスクロールする方法はありますか?

現在、最後の画像に達した後、スクロールがスクロールを停止します。続き

は私のコードです:

func setUpScrollView() { 
     let numberOfViews : Int = 3; 
     for i in 0...numberOfViews-1{ 
      let origin = CGFloat(i) * (self.view?.frame.size.width)! 
      let height : CGFloat 
      height = (self.bannerScrollView?.frame.size.height)! 

      let image : UIImageView = UIImageView.init(frame: CGRect(x : origin,y : 0.0,width : (self.view?.frame.size.width)!,height : height)) 
      image.image = UIImage.init(named: String.init(format: "banner%d", i+1)) 
      image.contentMode = UIViewContentMode.scaleToFill 
      self.bannerScrollView?.addSubview(image) 

     } 
     self.bannerScrollView?.contentSize = CGSize(width: self.view.frame.size.width * CGFloat(numberOfViews), height: (self.bannerScrollView?.frame.size.height)!) 
     self.timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(autoScroll), userInfo: nil, repeats: true) 

     self.pageControl = UIPageControl.init(frame: CGRect.zero) 
     self.pageControl?.numberOfPages = 3 
     self.pageControl?.isEnabled = false 
     self.bannerScrollView?.addSubview(self.pageControl!)   
    } 


func autoScroll() { 
       let targetXOffset = (self.bannerScrollView?.contentOffset.x)! + (self.bannerScrollView?.bounds.size.width)! 

       if targetXOffset <= CGFloat(((self.bannerScrollView?.contentSize.width)! - (self.bannerScrollView?.bounds.size.width)!)) { 
        self.bannerScrollView?.setContentOffset(CGPoint(x: targetXOffset,y: 0), animated: true) 
       } 

       let width : CGFloat = (self.bannerScrollView?.frame.size.width)! 
       let page = ((self.bannerScrollView?.contentOffset.x)! + width)/width   
} 
+0

このためにカルーセル表示を試すことができます。 –

答えて

0
func autoScroll() { 
    guard let scrollView = bannerScrollView else { return } 
    let width: CGFloat = scrollView.bounds.width 
    let targetXOffset = scrollView.contentOffset.x + width 

    if targetXOffset <= CGFloat((scrollView.contentSize.width - width)) { 
     scrollView.setContentOffset(CGPoint(x: targetXOffset, y: 0), animated: true) 
    } else { 
     scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true) 
    } 

    let page = (scrollView.contentOffset.x + width)/width 
    //need to do something with this page value  
} 

は、これらすべての!には注意してください - 彼らはあなたがここで実行する必要がある何

+0

これは、最後に到達したときに最初にスクロールするという効果を作りました。私はこの質問が「無限の」スクロールソリューションを探していて、同じ方向にスクロールし続けていると考えています。 –

0

に爆破を待っているだけで無限スクロールをシミュレートしています経験。

最初の画像をスクロールビューの末尾にコピーして、最初と最後の画像があるところに4つの画像があるようにしたいとします。

オートスクロールを開始すると、この繰り返しの4ページ目にいるかどうかを確認します。もしあなたがそうであれば、アニメーションなしでコンテンツオフセットを(0, 0)に戻します(これはユーザーには分かりません)。そして2番目のイメージにアニメーションを付けて繰り返します。

関連する問題