Created
February 12, 2022 14:59
-
-
Save barabashd/b80eb70e2cfb33e3b58f445a24ba259c to your computer and use it in GitHub Desktop.
RenderView
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class RenderView: UIView { | |
private var renderLayer: CALayer? | |
func update(renderLayer: CALayer) { | |
self.renderLayer = renderLayer | |
} | |
override func draw(_ rect: CGRect) { | |
guard let renderLayer = renderLayer, | |
let context = UIGraphicsGetCurrentContext() else { return } | |
renderLayer.render(in: context) | |
} | |
} | |
class ViewController: UIViewController { | |
private lazy var renderView = RenderView() | |
private var displayLink: CADisplayLink? | |
// TODO: setup renderView in viewDidLoad(); | |
// TODO: add 'chartsPinnedView.update(renderLayer: renderLayer)' at place when 'renderLayer' is ready; | |
// 'renderLayer' - layer that will recorded in renderView; | |
override func viewWillAppear(_ animated: Bool) { | |
super.viewWillAppear(animated) | |
displayLink = CADisplayLink(target: self, selector: #selector(displayLink(_:))) | |
displayLink?.add(to: RunLoop.main, forMode: RunLoop.Mode.common) | |
} | |
override func viewDidDisappear(_ animated: Bool) { | |
super.viewWillDisappear(animated) | |
displayLink?.invalidate() | |
} | |
@objc private func displayLink(_ displayLink: CADisplayLink) { | |
guard view.window != nil, !renderView.isHidden else { return } | |
renderView.setNeedsDisplay() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment