我想要一个水平滚动的布局来显示图像。如果设置0、0、0和0是UIScrollView
的约束,则它可以正常工作。问题恰恰是当我更改约束以使边距包围UIScrollView
时。这就是发生的情况:
UIScrollView中的第一张图片 UIScrollView中的第二个图像 UIScrollView中的第三张图片
如您所见,每次滚动时,当前页面越偏心。
我试图将尾随和前导约束常量减去到scrollLayout的宽度,使用帧和键进行播放,但没有成功。
如果我在iPhone 5S等较小的显示器上运行此示例,则问题更加明显。
class ViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var pageController: UIPageControl!
@IBOutlet weak var scrollView: UIScrollView!
let imagesArray = ["b_1", "b_2", "b_3", "b_4", "b_5"]
override func viewDidLoad() {
super.viewDidLoad()
self.scrollView.isPagingEnabled = true
self.pageController.numberOfPages = imagesArray.count
self.pageController.pageIndicatorTintColor = UIColor.blue
self.pageController.currentPageIndicatorTintColor = UIColor.gray
for i in 0...imagesArray.count - 1{
let imageView = UIImageView()
imageView.contentMode = .scaleToFill
imageView.image = UIImage(named: self.imagesArray[i])
let xPos = CGFloat(i)*self.view.bounds.size.width
imageView.frame = CGRect(x: xPos, y: 0, width: view.frame.size.width, height: self.scrollView.frame.size.height )
self.scrollView.contentSize.width = view.frame.size.width*CGFloat(i+1)
self.scrollView.addSubview(imageView)
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let page = scrollView.contentOffset.x/scrollView.frame.width
self.pageController.currentPage = Int(page)
}
}
因此,我想知道如何始终获取当前居中的图像。
谢谢
使用Rajesh结果编辑并查看调试:
答案 0 :(得分:1)
我建议使用UICollectionView
代替UIScrollView
-否则,您将从头开始构建许多基础知识。您可以使用以图像为中心的集合视图,确保已启用分页,并且应该获得所需的界面。确保视图控制器采用/遵守UICollectionViewDelegate
和UICollectionViewDelegateFlowLayout
协议,并在集合视图上设置这些委托。希望有帮助!祝你好运。