42 lines
1.1 KiB
Swift
42 lines
1.1 KiB
Swift
//
|
|
// ScrollRects.swift
|
|
// TableViewDragger
|
|
//
|
|
// Created by Kyohei Ito on 2017/12/08.
|
|
// Copyright © 2017年 kyohei_ito. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreImage
|
|
|
|
struct ScrollRects {
|
|
private let maxDistance: CGFloat = 10
|
|
private let size: CGSize
|
|
private let scrollRange: CGFloat
|
|
|
|
let topRect: CGRect
|
|
let bottomRect: CGRect
|
|
|
|
init(size: CGSize) {
|
|
self.size = size
|
|
scrollRange = size.height / 2.5
|
|
|
|
let scrollSize = CGSize(width: size.width, height: scrollRange)
|
|
topRect = CGRect(origin: .zero, size: scrollSize)
|
|
bottomRect = CGRect(origin: CGPoint(x: 0, y: size.height - scrollRange), size: scrollSize)
|
|
}
|
|
|
|
func distance(at point: CGPoint) -> CGFloat {
|
|
let ratio: CGFloat
|
|
if topRect.contains(point) {
|
|
ratio = -(scrollRange - point.y)
|
|
} else if bottomRect.contains(point) {
|
|
ratio = point.y - (size.height - scrollRange)
|
|
} else {
|
|
ratio = 0
|
|
}
|
|
|
|
return max(min(ratio / 30, maxDistance), -maxDistance)
|
|
}
|
|
}
|