今いじっているアプリでUIScrollViewをよく使っている。
UIScrollViewはDelegateで動作によるイベントを呼び出せる。
chatGPTによるとDelegateはextentionで分けると視認性が良くなるらしい。
とゆーことでよく使うスクロールビューのデリゲート。
後ページ単位で動いている場合は停止したページのページ数を取得するコードも。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
class ViewController: UIViewController { let scrollView = UIScrollView() override func viewDidLoad() { super.viewDidLoad() scrollView.delegate = self view.addSubview(scrollView) } } / MARK: - スクロールビューデリゲート extension ViewController: UIScrollViewDelegate { func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { // print("スクロール開始") } func scrollViewDidScroll(_ scrollView: UIScrollView) { // print("現在のスクロール位置: \(scrollView.contentOffset)") } func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { let currentPage = Int(scrollView.contentOffset.x / scrollView.frame.width) print("現在のページ: \(currentPage)") print("スクロール停止(慣性あり)") } func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { if !decelerate { print("スクロール停止(慣性なし)") } } } |