UITableView の contentOffset.y の値を使用して、それに伴ったアニメーション処理をしたかったのですが、0.0 未満の contentOffset.y は不要だったので、負の値を省いた contentOffset.y を取得するためのコンパクトな書き方を記載します。
どんくさい書き方
負の値になったら 0.0 を代入するどんくさい書き方。
1 2 3 4 5 6 7 8 9 |
//MARK: - UIScrollViewDelegate func scrollViewDidScroll(_ scrollView: UIScrollView) { var contentOffsetY = scrollView.contentOffset.y if contentOffsetY < 0.0 { contentOffsetY = 0.0 } print(contentOffsetY) } |
こういう書き方してるプロジェクトも結構あったし、新米のときはバリバリでこの書き方をしてた記憶があります。笑
コンパクトな書き方
1 2 3 4 5 |
//MARK: - UIScrollViewDelegate func scrollViewDidScroll(_ scrollView: UIScrollView) { print(max(0.0, scrollView.contentOffset.y)) } |
1行やーッ б(>ε<)∂
Generic Fundation に max(_:_:) という関数があり、2つの比較可能な値の大きい方を返します。
上記の書き方だと、0.0 と scrollView.contentOffset.y を比較し、大きい値を返すので、scrollView.contentOffset.y が負の値になると 0.0 が返ってくるという処理です。
min(_:_:) はお察しの通り、小さい方の値を返します。
さいごに
こういうのってアンテナ張りまくってないと、知る機会がない気がします (´・ω・`)
とりあえずこの関数は便利だし行数も減るしよく使うので、積極的に使用していきまーしょ。
コメント