0
안녕하세요. iOS 개발에 처음입니다. 한 번에 하나의 셀을 표시하고 가로로 (예 : 갤러리처럼) 스크롤하는 collectionview
을 사용하고 있습니다. 셀이 스크롤되고 셀 0과 셀 1이 화면 절반에 표시 될 때 내 화면에있는 레이블을 변경하는 것입니다. 현재 스크롤링이 중지되면 레이블의 텍스트가 변경됩니다. 나는 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
장치 화면에서 컬렉션 뷰 셀의 위치를 알아내는 방법
편집 1을 사용하고 있습니다 :
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let visibleRect = CGRect(origin: imageCollectionView.contentOffset, size: (imageCollectionView.bounds.size))
let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
let indexPath : IndexPath = imageCollectionView.indexPathForItem(at: visiblePoint)!
lblUserName.text = arrayImageData[indexPath.row]["userName"] as! String?
lblTime.text = arrayImageData[indexPath.row]["time"] as! String?
imgProfilePic.kf.setImage(with: arrayImageData[indexPath.row]["profilePic"] as! Resource?)
}
정말 가깝습니다! 여러분의 필요에 적절하게 부합되는 다른 방법이 델리게이트에 있습니다 -'scrollViewDidScroll' - https://developer.apple.com/reference/uikit/uiscrollviewdelegate/1619392-scrollviewdidscroll – Losiowaty
@Loisiowaty 편집 된 질문 부분을 확인하십시오. 나는'scrollViewDidScroll'에서 같은 코드를 사용합니다.'let indexpath' 라인에서 BAD_EXCESS 크래시가 발생합니다. – explorer
그 이유는'indexPathForItem'의 반환 값을 언랩 ('!')해야만 할 가능성이 높습니다. 가치는'nil' 일 수 있습니다 - 당신은 그것을 설명 할 필요가 있습니다. – Losiowaty