Ios 如何使用Swift 3在UIScrollview中实现自动滚动?

Ios 如何使用Swift 3在UIScrollview中实现自动滚动?,ios,swift3,Ios,Swift3,我想在swift 3中实现自动滚动到UIScrollView。谁能帮我一下吗 事实上,我是iOS开发的新手 我的代码: var bannerscView: UIScrollView! bannerscView = UIScrollView(frame: CGRect(x: 0, y: 50, width: Int(view.bounds.width), height: 350)) bannerscView.showsVerticalScrollIndicator = true

我想在swift 3中实现自动滚动到UIScrollView。谁能帮我一下吗

事实上,我是iOS开发的新手

我的代码:

var bannerscView: UIScrollView!
 bannerscView = UIScrollView(frame: CGRect(x: 0, y: 50, width: Int(view.bounds.width), height: 350))
    bannerscView.showsVerticalScrollIndicator = true
    view.addSubview(bannerscView)
    bannerscView.backgroundColor = UIColor.red
    bannerscView.translatesAutoresizingMaskIntoConstraints = false

    _ = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(bannerImgScroll), userInfo: nil, repeats: true)

func bannerImgScroll(){


    var xBannerOffset:CGFloat = 5
    for k in 0 ... 5 {

        let bannerImg = UIButton()
        bannerImg.tag = k
        bannerImg.backgroundColor = UIColor.blue //UIColor.darkGray
        bannerImg.setTitle("\(k)", for: .normal)
        //button.addTarget(self, action: #selector(btnTouch), for: UIControlEvents.touchUpInside)

        bannerImg.frame = CGRect(x: xBannerOffset, y: CGFloat(buttonPadding), width: 400, height: 300)
        xBannerOffset = xBannerOffset + CGFloat(buttonPadding) + bannerImg.frame.size.width
        // print("xOffset After : \(xOffset)")
        bannerscView.addSubview(bannerImg)


    }

    bannerscView.contentSize = CGSize(width: xBannerOffset, height: bannerscView.frame.height)
}

提前感谢

在ScrollView中自动滚动?嗯

scroll.setContentOffset(CGPoint(x: xPos, y: yPos), animated: true)
如果不填充ScrollView的内容大小,则不可能 您可以使用自动布局或编程方式在视图中执行操作

但是您可以根据包含的子视图更新UIScrollView的内容大小,如下所示

var contentRect = CGRectZero
for view in self.scrollView.subviews {
    contentRect = CGRectUnion(contentRect, view.frame)
}
self.scrollView.contentSize = contentRect.size

要启动自动滚动时,请在中启动计时器

timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
每两秒钟滚动一次scrollView

 func timerAction() {
        yOffSet += 10;
         dispatch_async(dispatch_get_main_queue()) {
  UIView.animateWithDuration(1, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
    self.scrollView.contentOffset.y = yOffSet
    }, completion: nil)
}
    }
}

Swift 4.x

var yOffset: CGFloat = 0

@objc func timerAction() {

    yOffset += 10

    DispatchQueue.main.async {
        UIView.animate(withDuration: 1.0) {
            self.scrollView.contentOffset.y = self.yOffset
        }
    }
}

添加更多详细信息。请参阅答案,您可以使用计时器自动滚动
bannerscView.addSubview(bannerImg)
为什么每次间隔都要添加子视图?实际上我在此处显示多个滚动视图您可以通过单击勾号接受答案,这将帮助其他面临同样问题的人@Ramachandramahapatra非常感谢你,Dhiru的宝贵回复。它只能滚动一次。谢谢DS达摩的快速回复:)谢谢巴厘岛的快速回复:)