2017-07-20 8 views
0

2秒ごとに自動的にスライドするイメージスライダを作成しています。私はスライドアニメーションせずに次の画像へすぐに移動を書いているコードは、私はscrollviewのスクロールを示すことによって、何とかそれを修正したい、これは私のコードです:UIScrollViewを使用したイメージスライダ

var imagesArray = [UIImage]() 
static var i = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
    imagesArray = [image1, image2, image3, image4] 
    for i in 0..<imagesArray.count{ 
     let imageview = UIImageView() 
     imageview.image = imagesArray[i] 
     imageview.contentMode = .scaleAspectFit 
     let xPosition = self.view.frame.width * CGFloat(i) 
     imageview.frame = CGRect(x: xPosition, y: 0, width: self.imagesScrollView.frame.width, height: self.imagesScrollView.frame.height) 
     imagesScrollView.contentSize.width = imagesScrollView.frame.width * CGFloat(i+1) 
     imagesScrollView.addSubview(imageview) 
    } 
} 

override func viewDidAppear(_ animated: Bool) { 
    let scrollingTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(MenuViewController.newStartScrolling), userInfo: nil, repeats: true) 
    scrollingTimer.fire() 

func newStartScrolling() 
{ 
    if MenuViewController.i == imagesArray.count { 
     MenuViewController.i = 0 
    } 
    let x = CGFloat(MenuViewController.i) * imagesScrollView.frame.size.width 
    imagesScrollView.contentOffset = CGPoint(x: x, y: 0) 
    MenuViewController.i += 1 
} 

ありがとうございました。

答えて

1

このコードを試してください。

override func viewDidAppear(_ animated: Bool) { 

    imagesArray = [UIImage(named: "apple.jpg")!, UIImage(named: "empire.jpg")!, UIImage(named: "ottawa.jpg")!] 

    imagesScrollView.contentSize = CGSize(width: imagesScrollView.frame.width * CGFloat(imagesArray.count), height: imagesScrollView.frame.height) 
    for i in 0..<imagesArray.count{ 
     let imageview = UIImageView() 
     imageview.image = imagesArray[i] 
     imageview.contentMode = .scaleAspectFill 
     imageview.clipsToBounds = true 
     let xPosition = self.imagesScrollView.frame.width * CGFloat(i) 
     imageview.frame = CGRect(x: xPosition, y: 0, width: self.imagesScrollView.frame.width, height: self.imagesScrollView.frame.height) 
     print(imageview) 
     imagesScrollView.addSubview(imageview) 
    } 

    let scrollingTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(ViewController.newStartScrolling), userInfo: nil, repeats: true) 
    scrollingTimer.fire() 
} 
func newStartScrolling() 
{ 
    if ViewController.i == imagesArray.count { 
     ViewController.i = 0 
    } 
    let x = CGFloat(ViewController.i) * imagesScrollView.frame.size.width 
    imagesScrollView.setContentOffset(CGPoint(x: x, y: 0), animated: true) 
    ViewController.i += 1 
} 

アニメーションを使用してコンテンツオフセットを変更するには、func setContentOffset(_ contentOffset: CGPoint, animated: Bool)メソッドを使用する必要があります。

関連する問題