33 lines
974 B
Swift
33 lines
974 B
Swift
|
//
|
||
|
// UIScrollView.swift
|
||
|
// Mastodon
|
||
|
//
|
||
|
// Created by sxiaojian on 2021/3/15.
|
||
|
//
|
||
|
|
||
|
import UIKit
|
||
|
|
||
|
extension UIScrollView {
|
||
|
public enum ScrollDirection {
|
||
|
case top
|
||
|
case bottom
|
||
|
case left
|
||
|
case right
|
||
|
}
|
||
|
|
||
|
public func scroll(to direction: ScrollDirection, animated: Bool) {
|
||
|
let offset: CGPoint
|
||
|
switch direction {
|
||
|
case .top:
|
||
|
offset = CGPoint(x: contentOffset.x, y: -adjustedContentInset.top)
|
||
|
case .bottom:
|
||
|
offset = CGPoint(x: contentOffset.x, y: max(-adjustedContentInset.top, contentSize.height - frame.height + adjustedContentInset.bottom))
|
||
|
case .left:
|
||
|
offset = CGPoint(x: -adjustedContentInset.left, y: contentOffset.y)
|
||
|
case .right:
|
||
|
offset = CGPoint(x: max(-adjustedContentInset.left, contentSize.width - frame.width + adjustedContentInset.right), y: contentOffset.y)
|
||
|
}
|
||
|
setContentOffset(offset, animated: animated)
|
||
|
}
|
||
|
}
|