Ios 如何使用Swift 3在UIScrollview中实现自动滚动?
我想在swift 3中实现自动滚动到UIScrollView。谁能帮我一下吗 事实上,我是iOS开发的新手 我的代码: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
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达摩的快速回复:)谢谢巴厘岛的快速回复:)