@@ -57,35 +57,26 @@ class MetalView: UIView, CoreMetalView {
5757/// On iOS the MTKView is used to prevent potential breaking of existing behavior.
5858/// Also, iOS 13 simulator doesn't directly support CAMetalLayer.
5959class MetalView : MTKView , CoreMetalView {
60- private class DelegateImpl : NSObject , MTKViewDelegate {
61- var onRender : ( ( ) -> Void ) ?
62- func mtkView( _ view: MTKView , drawableSizeWillChange size: CGSize ) { }
63- func draw( in view: MTKView ) {
64- onRender ? ( )
65- }
66- }
67-
68- var onRender : ( ( ) -> Void ) ? {
69- get { delegateImpl. onRender }
70- set { delegateImpl. onRender = newValue }
71- }
72-
73- func nextDrawable( ) -> CAMetalDrawable ? { currentDrawable }
74-
75- private let delegateImpl = DelegateImpl ( )
60+ var onRender : ( ( ) -> Void ) ?
7661
7762 override init ( frame frameRect: CGRect , device: MTLDevice ? ) {
7863 super. init ( frame: frameRect, device: device)
7964 autoResizeDrawable = false
8065 isPaused = true
8166 enableSetNeedsDisplay = false
82- delegate = delegateImpl
8367 }
8468
8569 required init ( coder: NSCoder ) {
8670 fatalError ( " init(coder:) has not been implemented " )
8771 }
8872
73+ override func draw( _ rect: CGRect ) {
74+ super. draw ( rect)
75+ onRender ? ( )
76+ }
77+
78+ func nextDrawable( ) -> CAMetalDrawable ? { currentDrawable }
79+
8980 open override func hitTest( _ point: CGPoint , with event: UIEvent ? ) -> UIView ? {
9081 let view = super. hitTest ( point, with: event)
9182 return view == self ? nil : view
0 commit comments