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
-
Element
gains anX
, andY
property which replace the oldOffset
property. IfX
is specified it sets the default horizontal alignment to Left and then offsets from that alignment. IfY
is specified it sets the default vertical alignment to Left and then offsets from that alignment. - The
Offset
property still offets but no longer modifies the alignment, thus stretching can still be used. To migrate either replaceOffset
withX
andY
or setAlignment="TopLeft"
.
Grid Columns and Rows
- Renamed properties on Grid and GridLayout:
ColumnData
->Columns
andRowData
->Rows
. The oldRows
andColumns
(which are only used in Uno code) are now calledRowList
andColumnList
respectively.
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 aBasic
theme previously, but now it implies an “empty” theme. AddTheme="Basic"
to your App, and include theFuse.BasicTheme
package 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.ImageElement
removed. Use the high-levelImage
to wrap native/graphics images. - The hit test for
Image
is 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.Shapes
is no longer part of the standard namespaces.Circle
andRectangle
are now controls in Fuse.Controls. -
WhileSliding
has been replaced with the more genericWhileInteracting
. -
ScrollViewer
renamedScrollView
. -
ScrollView.Behavior
removed. You can use theKeepFocusInView
andUserScroll
properties 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. -
IScrollable
has been removed. AScroller
must be rooted inside aScrollView
. -
BasicTheme
Button
no longer sets the style of all text contained within, only theButtonText
has a style now. If you were usingText
inside a button you can useButtonText
instead. - 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.LayoutRole
made a style property ofLayout
since that is the only node in which it applies (used by Layout) -
Fuse.LayoutRole
moved toFuse.Layouts.LayoutRole
-
Control.VisualTree
has been removed. Several controls, likeScrollView
derive now fromContentControl
which exposesContent
. This likely doesn’t require any code change, but if you were usingVisualTree
in a custom control, you must now useContentControl
and theContent
property. -
Control.Overlays
has been removed. You can useLayer="Overlay"
on a panel instead now (from which most controls are derived). A few controls, likeScrollView
no longer have multiple children, and thus must be placed inside aPanel
if you need an overlay or background. -
Control.OnHitTestControlChildren
has 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...Bounds
function and produce an appropriate bounds, otherwise hit test clipping will prevent the node from getting events. -
IViewport.PixelToWorldRay
is replaced withIViewport.PointToWorldRay
since point space is more common. Divide byPointDensity
to calculate in pixel space (not valid in all situations). - Hit test clipping is now based on
HitTestBounds
and not theRenderBounds
of controls. If you have a custom control that doesn’t seem to get messages add a customHitTestLocalBounds
definition. Standard controls should all respond correctly.
FuseJS
- Storage: Added
deleteSync
,writeSync
andreadSync
. -
Fetch
andFetchJson
are deprecated, use the browser basedfetch
(lowercase ‘f’) API instead. - Added optional parameter to
NativeEvent
to decide if events should be queued before the handler is set. - Added
localStorage
web api shim. - Added
setInterval
.