【发布时间】:2018-12-05 17:38:20
【问题描述】:
我的应用程序中有一个水平 UIScrollview,它有 1 个非常长的 UIImageView 开始。我有一个计时器和动画来创建滚动视图下的图像自动滚动的错觉。一旦图像结束,我会动态地将相似的图像添加到滚动视图中,因此它应该看起来像图像在重复自身。
这就是我希望它们在滚动视图下显示的方式:image1|image2|image3|image4...... 这些图像将从右向左滚动。在您登录之前,它在 Behance 的 iphone 应用中的工作原理。
这是我的代码(在情节提要中,我已经添加了滚动视图和一个 UIIMageview)。
override func viewDidAppear(_ animated: Bool) {
Timer.scheduledTimer(timeInterval: 0.6, target: self, selector: #selector(scrollImage), userInfo: nil, repeats: true)
}
@objc func scrollImage() {
offSet.x = offSet.x + CGFloat(20)
UIView.animate(withDuration: 1.0, animations: {
self.behanceView.setContentOffset(self.offSet, animated: false)
})
}
func addImagetoScrollView() {
let imageView = UIImageView(image:UIImage(named:"Landing_Scrollable"))
print(imageCount*Int(self.behanceView.contentSize.width)+100)
imageView.frame = CGRect(x:imageCount*Int(self.behanceView.contentSize.width), y: 0, width: 875, height: 502)
self.behanceView.contentSize = CGSize(width: imageView.bounds.size.width * CGFloat(imageCount), height: imageView.bounds.size.height)
self.behanceView.addSubview(imageView)
imageCount+=1
}
extension ViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let scrollViewWidth = scrollView.frame.size.width;
let scrollOffset = scrollView.contentOffset.x;
print(imageCount*Int(self.behanceView.contentSize.width - scrollViewWidth))
if scrollOffset >= CGFloat(imageCount*Int(self.behanceView.contentSize.width - scrollViewWidth)) {
self.addImagetoScrollView()
}
}
}
但是当我看到它在运行时,它会做一些奇怪的事情并且动画全部关闭。
有人可以帮忙吗。
谢谢,
【问题讨论】:
-
您希望用户能够手动滚动视图吗?还是应该只因为计时器而滚动?
-
我认为您应该在滚动图像之前将所有图像添加到滚动视图,而不是在 viewDidAppear 中调用滚动图像,顺便说一句,您应该在其函数顶部调用 super.viewDidAppear(animated)
-
@robmayoff :我希望这是一个基于计时器的自动滚动,并且用户交互被禁用。
-
@TungVuDuc :很好。我可以在开始时添加所有图像,这很有效,但我不确定有多少图像会足够好,所以想动态添加它。
标签: ios swift3 uiscrollview