如何在按钮按下时在集合视图中滚动(水平)?

时间:2015-12-01 15:31:26

标签: ios swift uicollectionview

我有一个带图像的集合视图。我想在按下按钮时执行滚动。我在google上搜索过我发现只设置了contentoffset但是我想用动画滚动(如果内容超过滚动区域,滚动应该会反弹)。我添加了一个image来告诉你我到底要做什么,在图片中有一个集合视图,两侧的小箭头是按钮。

 @IBAction func moveScrollLeft(sender: UIButton) {
    UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
        self.imageCollectionView.contentOffset.x -= 50
        }, completion: nil)
    print(imageCollectionView.contentOffset.x)
}

@IBAction func moveScrollRight(sender: UIButton) {
    UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
        self.imageCollectionView.contentOffset.x += 50
        }, completion: nil)
    print(imageCollectionView.contentOffset.x)

}

2 个答案:

答案 0 :(得分:0)

使用UICollectionview的scrollToItemAtIndexPath(_:atScrollPosition:animated:) https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/#//apple_ref/occ/instm/UICollectionView/scrollToItemAtIndexPath:atScrollPosition:animated

例如:

let indexPath = NSIndexPath(forRow: 3, inSection: 0)
imageCollectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .CenteredHorizontally, animated: true)

答案 1 :(得分:0)

请检查此代码我修改了您的代码:

@IBAction func moveScrollLeft(sender: UIButton) {

        self.imageCollectionView.contentOffset.x -= 50

    UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
        }, completion: nil)
             self.view.layoutIfNeeded()

    print(imageCollectionView.contentOffset.x)
}

@IBAction func moveScrollRight(sender: UIButton) {

        self.imageCollectionView.contentOffset.x += 50

    UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
    self.view.layoutIfNeeded()

        }, completion: nil)

    print(imageCollectionView.contentOffset.x)

}