Swift 点击单元格中的按钮时,动画完成时会触发scrollViewDidScroll事件
让我解释一下我的行为 这是一张有一串卡片的桌子 表格部分标题缩小,向下滚动时“开始研究”按钮向下滑动。Swift 点击单元格中的按钮时,动画完成时会触发scrollViewDidScroll事件,swift,uitableview,Swift,Uitableview,让我解释一下我的行为 这是一张有一串卡片的桌子 表格部分标题缩小,向下滚动时“开始研究”按钮向下滑动。 当向上滚动时, “开始学习”按钮总是向上滑动。 当滚动到最顶端时,标题会向后展开。 当一张卡片被轻触时,卡片会翻转。 func scrollViewDidScroll(_ scrollView: UIScrollView) { let currentOffset = scrollView.contentOffset.y let offsetDiff = self.lastCon
当向上滚动时,
“开始学习”按钮总是向上滑动。
当滚动到最顶端时,标题会向后展开。
当一张卡片被轻触时,卡片会翻转。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentOffset = scrollView.contentOffset.y
let offsetDiff = self.lastContentOffset - currentOffset
if(currentOffset <= 0){
}else{
headerRef.transformHeader(currentOffset: currentOffset, offsetDiff: offsetDiff)
if(self.lastContentOffset > currentOffset){ // move up
if(isStudyButtonHidden){
self.showStudyButton()
}
}else if(self.lastContentOffset < currentOffset){ // move down
if(!isStudyButtonHidden){
self.hideStudyButton()
}
}
}
self.lastContentOffset = currentOffset
}
有人对此有什么想法吗?
非常感谢您抽出时间……我知道这听起来有点不太对劲,但也许您可以在动画之前设置一个变量,然后在完成块中重置。您可以在
scrollViewDidScroll
中检查该标志并阻止更新。
func transformHeader(currentOffset: CGFloat, offsetDiff:CGFloat){
let nextY:CGFloat
let nextOffset = currentOffset - offsetDiff
let transformValueRate:CGFloat
if(nextOffset < 0){ // scrolled with pulling down to very top
nextY = 0
transformValueRate = 1
}else if(nextOffset > maxTranslateY){ // scrolling down with pushing up
print("stay shrinked")
nextY = -maxTranslateY
transformValueRate = 0
}else{
nextY = -currentOffset
transformValueRate = 1 - (currentOffset / maxTranslateY)
}
let nextFontScale = 0.65 + (0.35 * transformValueRate)
UIView.animate(withDuration: 0) {
self.contentView.frame.origin.y = nextY
self.headerTitleLabelRef.textColor = UIColor(red: 0, green: 0, blue: 0, alpha: transformValueRate)
self.cardsLeftCntLabelRef.transform = CGAffineTransform(scaleX: nextFontScale, y: nextFontScale)
}
}
UIView.animate(withDuration: animationDuration, delay: 0, options: [], animations: {
self.cardButton.layer.transform = rotationAndPerspectiveTransform
}, completion: { (finished: Bool) in
if(isTapped){
self.delegate?.updateIsFlippedProp(card: self.card!)
}
})