protected override void OnAttached() { if (Element is not View elementView) { return; } switch (state) { case ShadowEffectState.Initialized: shadowPanel = new StackLayout() { Children = { new Grid() } }; state = ShadowEffectState.PanelCreated; MoveElementTo(elementView, shadowPanel); break; case ShadowEffectState.PanelCreated: AppendShadow(); state = ShadowEffectState.Attached; break; default: break; } }
protected override void OnDetached() { if (state != ShadowEffectState.Attached) { return; } if (View != null) { View.SizeChanged -= ViewSizeChanged; } shadow?.Dispose(); shadow = null; spriteVisual?.Dispose(); spriteVisual = null; state = ShadowEffectState.PanelCreated; }