невозможно скрыть кнопку после завершения перемещения в collectionView

я прокручиваю слева и справа в collectionView, нажимая кнопку по горизонтали, она работает хорошо, но я не знаю, как скрыть кнопку, когда в стороне collectionView больше нет элемента. кнопка предварительного просмотра будет скрываться, когда в левой части больше не будет элемента, а следующая кнопка будет скрыта, когда в правой части больше не будет элемента. вот код левой и правой кнопки

let arrow_leftBtn: UIButton = {
    let btn = UIButton()
    btn.setImage(UIImage(named: "arrow_left"), for: .normal)

    btn.addTarget(self, action: #selector(arrowLeftBtnClick), for: .touchUpInside)
    return btn

}()

func arrowLeftBtnClick() {
    let collectionBounds = self.collectionView?.bounds
    let contentOffset = CGFloat(floor((self.collectionView?.contentOffset.x)! - (collectionBounds?.size.width)!))
    self.moveToFrame(contentOffset: contentOffset)
}

let arrow_rightBtn: UIButton = {
    let btn = UIButton()
    btn.setImage(UIImage(named: "arrow_right"), for: .normal)


    btn.addTarget(self, action: #selector(arrowRightBtnClick), for: .touchUpInside)
    return btn


}()


func arrowRightBtnClick() {

    let collectionBounds = self.collectionView?.bounds
    let contentOffset = CGFloat(floor((self.collectionView?.contentOffset.x)! + (collectionBounds?.size.width)!))
    self.moveToFrame(contentOffset: contentOffset)
}

func moveToFrame(contentOffset : CGFloat) {

    let frame: CGRect = CGRect(x : contentOffset ,y : self.collectionView!.contentOffset.y ,width : self.collectionView!.frame.width,height : self.collectionView!.frame.height)
    self.collectionView?.scrollRectToVisible(frame, animated: true)


}


func setupLeftAndRightArrow() {



    view.addSubview(arrow_leftBtn)
    view.addSubview(arrow_rightBtn)

    view.addConstraintsWithFormat("H:|-20-[v0(20)]", views: arrow_leftBtn)
    view.addConstraintsWithFormat("V:|-180-[v0(20)]|", views: arrow_leftBtn)

    view.addConstraintsWithFormat("H:[v0(20)]-30-|", views: arrow_rightBtn)
    view.addConstraintsWithFormat("V:|-180-[v0(20)]|", views: arrow_rightBtn)
}

введите здесь описание изображения


person Quiet Islet    schedule 23.08.2017    source источник
comment
Вы хотите скрыть кнопки «Далее» и «Предыдущий», которые использовались для прокрутки UICollectionView?   -  person Mathi Arasan    schedule 23.08.2017
comment
см. этот stackoverflow. com/questions/29362915/   -  person Anbu.Karthik    schedule 23.08.2017
comment
кнопка предварительного просмотра скроется, когда в левой части больше не будет элемента, а кнопка «Далее» будет скрыта, когда в правой части больше не будет элемента.   -  person Quiet Islet    schedule 23.08.2017
comment
@ user3589771 я редактирую свой вопрос, пожалуйста, проверьте его еще раз   -  person Quiet Islet    schedule 23.08.2017
comment
@user3589771 user3589771 я добавил изображение проекта, пожалуйста, проверьте его   -  person Quiet Islet    schedule 23.08.2017
comment
Если UICollectionViewItem имеет полную ширину, используйте количество элементов представления коллекции (array.count-1)*screen_width==currentcontentOffset для правой кнопки и 0==contentOffset для левой кнопки. Проверьте этот ответ на прокрутку   -  person Mathi Arasan    schedule 23.08.2017
comment
@user3589771 user3589771, пожалуйста, посмотрите на изображение, которое я добавил недавно. он прокручивается по нажатию кнопки, но я не знаю, как скрыть кнопку, когда прокрутка завершена   -  person Quiet Islet    schedule 23.08.2017
comment
У нас есть только возможность найти конец прокрутки или нет, используйте метод scrollViewDidEndDecelerating вместо scrollViewDidScroll. Тем не менее, это не то, что вы хотите, пожалуйста, обновите свой вопрос. Вы не упомянули ничего, связанного с прокруткой, чтобы скрыть.   -  person Mathi Arasan    schedule 23.08.2017


Ответы (2)


Реализовать метод UICollectionViewDelegate:

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
{
    arrow_rightBtn.isHidden = (indexPath.row == collectionView.numberOfItems(inSection: 0) - 1)
    arrow_leftBtn.isHidden = (indexPath.row == 0)
}

Это скроет arrow_rightBtn, когда будет видна последняя ячейка, и скроет arrow_leftBtn, когда будет видна первая ячейка.

person PGDev    schedule 23.08.2017
comment
зайдите сюда stackoverflow.com/questions/48970198/ - person Quiet Islet; 25.02.2018
comment
@QuietIslet Не могли бы вы объяснить ссылку, которую вы предоставили? Я не понимаю. - person PGDev; 25.02.2018
comment
Как обнаружить только одну кнопку в ячейке таблицы, здесь обнаружить несколько кнопок, stackoverflow.com/questions/48970198/ - person Quiet Islet; 26.02.2018
comment
@QuietIslet Я ответил на ваш вопрос по предоставленной ссылке. Посмотрите и дайте мне знать, если вы все еще сталкиваетесь с какими-либо проблемами в связи с этим. - person PGDev; 26.02.2018

Вы можете использовать метод делегата collectionView для обнаружения первых последних ячеек

override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
    if indexPath.row == dataSource.count - 1 {
        // Last cell is visible
        leftBtn.isHidden = false
        rightBtn.isHidden =true
    } else if indexPath.row == 0 {
        // First cell is visible
        leftBtn.isHidden = true
        rightBtn.isHidden = false
    } else {
        //for others cells
        leftBtn.isHidden = false
        rightBtn.isHidden =false

    }
}
person Baig    schedule 23.08.2017
comment
Вопрос связан с тем, чтобы скрыть левую и правую кнопку при свайпе - person Anbu.Karthik; 23.08.2017
comment
@Baig, спасибо за попытку. я добавил изображение проекта, пожалуйста, проверьте его - person Quiet Islet; 23.08.2017
comment
Я понимаю, вы можете скрыть левую кнопку, когда видна первая ячейка collectionView, аналогично скрыть правую кнопку, когда видна последняя ячейка collectionView - person Baig; 23.08.2017
comment
@AzmalTech, пожалуйста, посмотрите обновленный ответ, может он даст вам представление - person Baig; 23.08.2017