ViewController
class ViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var topButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if(scrollView.contentOffset.y > (scrollView.contentSize.height - scrollView.frame.size.height) / 2) {
topButton.isHidden = false
} else {
topButton.isHidden = true
}
}
}
Swift
복사
•
scrollView를 scrollViewDidScroll에서 사용하기 위해서 UIScrollViewDelegate를 Delegate한다.
•
사용할 scrollView에 처음 view가 생성될 때 delegate한다.
•
scrollView가 움직일 때 content offset이 변경되는 데 그 offset의 y부분은 scrollView.bounds.origin.y와 같다.
•
해당 content offset이 전체 스크롤뷰의 반 이상으로 내려오면 topButton이 보여지고 아니면 보이지 않게 한다.
@IBAction func touchUpTop(_ sender: Any) {
topButton.isHidden = true
scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
}
Swift
복사
•
topButton를 누르면 보이지 않게 한다. top 부분에 도달했을 때는 버튼이 보이지 않기 때문이다.
•
setContentOffset은 UIScrollView에서 특정 위치로 scroll할 때 사용된다.
•
x축으로는 스크롤할 필요가 없기 때문에 0으로 해주고 맨 위로 이동할 것이기에 y축도 0으로 맞춰준다.