Xamarin.Forms SkiaSharp Gradient working on Android but not on iOS -
we need gradient on our pages, we're using skiasharp , gradientview. works fine on android isn't working on ios - gradient doesn't display.
do need ios-specific initialisation skiasharp on ios, renderers or code in appdelegate?
edit running on ipad ios 10.3.3. our xaml:
<?xml version="1.0" encoding="utf-8" ?> <contentview xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:class="myproject.xforms.controls.gradientview"> </contentview> our xaml.cs
using skiasharp; using skiasharp.views.forms; using xamarin.forms; namespace myproject.xforms.controls { public partial class gradientview : contentview { public color startcolor { get; set; } = color.transparent; public color endcolor { get; set; } = color.transparent; public bool horizontal { get; set; } = false; public gradientview() { initializecomponent(); skcanvasview canvasview = new skcanvasview(); canvasview.paintsurface += oncanvasviewpaintsurface; content = canvasview; } void oncanvasviewpaintsurface(object sender, skpaintsurfaceeventargs args) { skimageinfo info = args.info; sksurface surface = args.surface; skcanvas canvas = surface.canvas; canvas.clear(); var colors = new skcolor[] { startcolor.toskcolor(), endcolor.toskcolor() }; skpoint startpoint = new skpoint(0, 0); skpoint endpoint = horizontal ? new skpoint(info.width, 0) : new skpoint(0, info.height); var shader = skshader.createlineargradient(startpoint, endpoint, colors, null, skshadertilemode.clamp); skpaint paint = new skpaint { style = skpaintstyle.fill, shader = shader }; canvas.drawrect(new skrect(0, 0, info.width, info.height), paint); } } }
maybe haven't installed nugets (both skiasharp , skiasharp.views.forms) ios project?
i copy-pasted code brand new app, , worked first time.
some other things may issue view height/width 0. or, dodgy case color transparent.
Comments
Post a Comment