Я сделал функцию для создания круговой анимации. Функция принимает радиус: float в качестве входных данных. Я сделал это в классе ViewController, и он отлично работает для этого контроллера представления. Но теперь я хочу использовать эту анимацию на нескольких контроллерах представления и не хочу писать один и тот же код на каждом контроллере представления. Итак, я хочу знать, как я могу сделать эту функцию в отдельном файле таким образом, что мне нужно только вызвать функцию с радиусом, и она сделает всю работу. Или вы можете сказать мне лучшую практику для этого. Заранее спасибо.
//
Я не хочу делать это в myViewController, я просто хочу создать новый класс только для круговой анимации. и также не хочу импортировать этот класс, который хочет делать вот так -
import UIKit
class CircularProgressView {
private let shapeLayer = CAShapeLayer()
public func createProgressView(radius:CGFloat,forView:UIView) {
let center = forView.center
let circularPath = UIBezierPath(arcCenter: center, radius: radius, startAngle: -CGFloat.pi/2, endAngle: 2*CGFloat.pi, clockwise: true)
let trackLayer = CAShapeLayer()
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = UIColor.lightGray.cgColor
trackLayer.fillColor = UIColor.clear.cgColor
trackLayer.lineWidth = 10
forView.layer.addSublayer(trackLayer)
shapeLayer.path = circularPath.cgPath
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineWidth = 10
shapeLayer.lineCap = .round
shapeLayer.strokeEnd = 0
forView.layer.addSublayer(shapeLayer)
forView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
}
@objc private func handleTap() {
print("hello s")
let basicAnimation = CABasicAnimation(keyPath: "strokeEnd")
basicAnimation.toValue = 1
basicAnimation.duration = 2
basicAnimation.fillMode = .forwards
basicAnimation.isRemovedOnCompletion = false
shapeLayer.add(basicAnimation, forKey: "basic")
}
}
и использовать этот импорт UIKit
class ViewController1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
CircularProgressView().createProgressView(radius: 50, forView: view)
}
}
, но в этом коде распознаватель гостя не работает.