I made one for uGUI over a year ago. I never made this for NGUI. To do this in NGUI you have two options.
1. Use a UITexture (can't be a sprite) and animate its material in UIWidget.onRender.
2. Create a scroll view above the widget (possibly masked), and move a widget inside to create that effect.