Highlights
- Support for native iOS and Android UI controls in UX markup
- Fuse Inspector lets you tweak values without refreshing the whole app
- Fuse Monitor, a common place to find all output from preview
- Fuse Dashboard, makes it easy to nativagate your Fuse projects
- On OSX: experimental Sketch importer for Fuse
- Tons of minor fixes and improvements.
Backwards compatibility
To make your existing projects work with Fuse 0.8.0, you have to add the following to the list of Packages in your .unoproj file:
"Fuse.Android",
"Fuse.Desktop",
"Fuse.iOS",
UX Markup Changes
X,Y, Offset
-
Elementgains anX, andYproperty which replace the oldOffsetproperty. IfXis specified it sets the default horizontal alignment to Left and then offsets from that alignment. IfYis specified it sets the default vertical alignment to Left and then offsets from that alignment. - The
Offsetproperty still offets but no longer modifies the alignment, thus stretching can still be used. To migrate either replaceOffsetwithXandYor setAlignment="TopLeft".
Grid Columns and Rows
- Renamed properties on Grid and GridLayout:
ColumnData->ColumnsandRowData->Rows. The oldRowsandColumns(which are only used in Uno code) are now calledRowListandColumnListrespectively.
To migrate, change:
<Grid RowData="1,2" ColumnData="100px,auto">
To:
<Grid Rows="1,2" Columns="100px,auto">
Native Controls
- An
<App>without a theme tag implied aBasictheme previously, but now it implies an “empty” theme. AddTheme="Basic"to your App, and include theFuse.BasicThemepackage in your project to get the basic theme. - To enable native UI controls on iOS and android use
<App Theme="Native" />. To be able to work desktop preview while using native themes, useTheme="NativeWithFallback"
Misc
-
Fuse.Elements.ImageElementremoved. Use the high-levelImageto wrap native/graphics images. - The hit test for
Imageis now strictly within the visible image, not the empty area in the control, in cases where the image does not fill the control entirely. -
Fuse.Shapesis no longer part of the standard namespaces.CircleandRectangleare now controls in Fuse.Controls. -
WhileSlidinghas been replaced with the more genericWhileInteracting. -
ScrollViewerrenamedScrollView. -
ScrollView.Behaviorremoved. You can use theKeepFocusInViewandUserScrollproperties directly. If you need a scroll view that doesn’t have standard behavior you’ll have to create a style that doesn’t add that behavior. -
IScrollablehas been removed. AScrollermust be rooted inside aScrollView. -
BasicThemeButtonno longer sets the style of all text contained within, only theButtonTexthas a style now. If you were usingTextinside a button you can useButtonTextinstead. - Many of the basic controls are now derived from
Panel, making it even more important you never style panel. If you need a custom panel type then create one with<Panel ux:Class="MyPanel"/>and apply a style to that panel. -
Node.LayoutRolemade a style property ofLayoutsince that is the only node in which it applies (used by Layout) -
Fuse.LayoutRolemoved toFuse.Layouts.LayoutRole -
Control.VisualTreehas been removed. Several controls, likeScrollViewderive now fromContentControlwhich exposesContent. This likely doesn’t require any code change, but if you were usingVisualTreein a custom control, you must now useContentControland theContentproperty. -
Control.Overlayshas been removed. You can useLayer="Overlay"on a panel instead now (from which most controls are derived). A few controls, likeScrollViewno longer have multiple children, and thus must be placed inside aPanelif you need an overlay or background. -
Control.OnHitTestControlChildrenhas been removed, just useOnHitTestChildren.
BottomBarBackground and StatusBarBackground renamed
BottomBarBackground and StatusBarBackground are now deprecated (but still works) in favor of the more consistently-named BottomFrameBackground and TopFrameBackground.
The API’s for both are exactly the same as before.
HitTest changes (Uno)
- If you override a
HitTest...function you must override the matchingHitTest...Boundsfunction and produce an appropriate bounds, otherwise hit test clipping will prevent the node from getting events. -
IViewport.PixelToWorldRayis replaced withIViewport.PointToWorldRaysince point space is more common. Divide byPointDensityto calculate in pixel space (not valid in all situations). - Hit test clipping is now based on
HitTestBoundsand not theRenderBoundsof controls. If you have a custom control that doesn’t seem to get messages add a customHitTestLocalBoundsdefinition. Standard controls should all respond correctly.
FuseJS
- Storage: Added
deleteSync,writeSyncandreadSync. -
FetchandFetchJsonare deprecated, use the browser basedfetch(lowercase ‘f’) API instead. - Added optional parameter to
NativeEventto decide if events should be queued before the handler is set. - Added
localStorageweb api shim. - Added
setInterval.