Forms9Patch 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Forms9Patch --version 1.1.0
NuGet\Install-Package Forms9Patch -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Forms9Patch" Version="1.1.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Forms9Patch --version 1.1.0
#r "nuget: Forms9Patch, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Forms9Patch as a Cake Addin
#addin nuget:?package=Forms9Patch&version=1.1.0

// Install Forms9Patch as a Cake Tool
#tool nuget:?package=Forms9Patch&version=1.1.0

Xamarin Forms is great for developing apps on Android, iOS, and Universal Windows Platform (UWP) but it is missing some important features:
•Scalable images
•PCL and Shared Library, multi-screen / multi-resolution image management
•HTML formatted text for labels and buttons
•PCL and Shared Library custom font management

Android developers can use NinePatch bitmaps, the drawable directory naming convention, Html.FromHtml, and a bunch of complex file manipulations to address the image issue.  Likewise, iOS developers can use ResizeableImageWithCapInsets, the @2x, @3x, @4x file naming convention, and some 3rd party libraries for this purpose.  Forms9Patch enhances Xamarin Forms to make multi-resolution / multi-screen image management, custom fonts, and HTML text formatting easy for PCL apps for iOS and Android.

Product Compatible and additional computed target framework versions.
MonoAndroid monoandroid10 is compatible. 
Universal Windows Platform uap was computed.  uap10.0 is compatible. 
Xamarin.iOS xamarinios10 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Forms9Patch:

Package Downloads
EltraXamCommon

Eltra - CANOpen based IoT Framework - SDK - Xamarin UI

Plugin.Xamarin.Tools

Set of several tools and dependency services for xamarin

EnigmatiKreations.Framework.Controls

Package Description

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Forms9Patch:

Repository Stars
baskren/Forms9Patch
Simplify image management and text formatting in your Xamarin.Forms apps
Version Downloads Last updated
2.4.9 144,076 12/16/2020
2.4.9-beta2 1,393 12/16/2020
2.4.9-beta1 1,541 12/15/2020
2.4.8 11,471 11/28/2020
2.4.7 5,240 11/19/2020
2.4.6 9,104 9/18/2020
2.4.5 1,747 9/17/2020
2.4.4 1,749 9/17/2020
2.4.2 9,022 7/25/2020
2.4.1 2,279 7/25/2020
2.4.0 2,081 7/24/2020
2.4.0-beta2 1,271 7/24/2020
2.4.0-beta1 1,292 7/24/2020
2.3.0 13,592 6/29/2020
2.2.6 20,230 3/15/2020
2.2.5 2,530 3/14/2020
2.2.5-beta1 1,280 3/14/2020
2.2.4 8,728 1/28/2020
2.2.4-beta1 1,373 1/23/2020
2.2.3 3,841 1/4/2020
2.2.3-pre1 2,342 1/4/2020
2.2.2 2,326 12/31/2019
2.2.1 2,015 12/30/2019
2.2.0 1,899 12/26/2019
2.1.3 3,078 12/10/2019
2.1.2 4,252 11/27/2019
2.1.1 1,622 11/26/2019
2.1.0 1,646 11/26/2019
2.1.0-beta1 1,320 11/22/2019
2.0.2 2,441 11/13/2019
2.0.1 1,763 11/12/2019
2.0.0 8,953 11/11/2019
2.0.0-rc1 1,310 11/11/2019
1.8.1 4,252 9/17/2019
1.8.0.5 3,122 8/15/2019
1.8.0.4 2,688 7/26/2019
1.8.0.2 2,975 7/9/2019
1.8.0.1 2,334 7/5/2019
1.8.0 2,992 6/26/2019
1.7.0 13,528 4/22/2019
1.6.7.2 5,205 4/12/2019
1.6.7.1 2,390 4/11/2019
1.6.7 2,186 4/11/2019
1.6.6.2 2,748 4/7/2019
1.6.6.1 2,985 3/22/2019
1.6.6 8,317 3/2/2019
1.6.5.1 2,604 2/6/2019
1.6.5.1-rc2 2,055 2/1/2019
1.6.5.1-rc1 1,979 1/30/2019
1.6.5 2,685 1/28/2019
1.6.4 19,873 12/5/2018
1.6.3 10,954 11/25/2018
1.6.2.1 4,304 11/16/2018
1.6.2 2,625 11/15/2018
1.6.1 2,641 11/2/2018
1.6.0.1 2,364 10/30/2018
1.6.0-rc5 2,189 10/30/2018
1.6.0-rc4 2,087 10/30/2018
1.6.0-rc3 2,050 10/29/2018
1.6.0-rc2 2,151 10/27/2018
1.6.0-rc1 2,128 10/27/2018
1.5.0.9 11,032 10/23/2018
1.5.0.9-beta1 2,294 10/22/2018
1.5.0.8 2,429 10/22/2018
1.5.0.7-rc1 2,181 10/20/2018
1.5.0.6 2,589 10/12/2018
1.5.0.5 2,545 10/12/2018
1.5.0-rc1 2,155 10/9/2018
1.4.0.3 3,172 9/7/2018
1.4.0.2 2,638 9/7/2018
1.4.0.1 2,470 9/7/2018
1.4.0 2,524 9/5/2018
1.3.3 6,242 6/28/2018
1.3.2 4,731 6/19/2018
1.3.1 3,046 5/15/2018
1.3.0 2,971 5/11/2018
1.2.0.3 3,012 4/19/2018
1.2.0 2,569 4/17/2018
1.1.1 2,978 2/19/2018
1.1.0 2,967 1/6/2018
1.0.1.3 2,583 1/5/2018
1.0.1.2 2,857 1/4/2018
1.0.1.1 3,124 1/2/2018
1.0.0 2,699 12/28/2017
0.10.3.5 11,228 10/26/2017
0.10.3.4 3,981 10/7/2017
0.10.3.3 6,501 8/14/2017
0.10.3.2 2,655 8/2/2017
0.10.3.1 2,719 7/10/2017
0.10.3 2,624 6/27/2017
0.10.2.16 2,565 6/21/2017
0.10.2.13 2,756 5/30/2017
0.10.2.12 2,592 5/23/2017
0.10.2.11 2,766 5/10/2017
0.10.2.10 2,639 5/3/2017
0.10.2.9 2,549 5/3/2017
0.10.2.8 2,584 5/3/2017
0.10.2.7 2,650 5/1/2017
0.10.2.6 2,944 4/16/2017
0.10.2.5 2,549 4/16/2017
0.10.2.4 2,652 4/10/2017
0.10.2.3 2,673 3/28/2017
0.10.2.2 3,288 3/2/2017
0.10.2.1 3,106 2/22/2017
0.10.1 2,781 2/16/2017
0.10.0.1 2,769 2/13/2017
0.10.0 2,672 2/11/2017
0.9.13.5 4,823 10/13/2016
0.9.13.4 3,024 9/26/2016
0.9.13.3 2,897 9/21/2016
0.9.13.2 2,686 9/15/2016
0.9.13.1 2,602 9/1/2016
0.9.13 2,695 8/22/2016
0.9.12.5 2,582 8/17/2016
0.9.12.4 2,803 8/6/2016
0.9.12.3 2,776 7/19/2016
0.9.12.2 2,944 7/16/2016
0.9.12.1 2,702 7/13/2016
0.9.12 2,776 7/11/2016
0.9.11.2 2,672 6/27/2016
0.9.11.1 2,826 5/10/2016
0.9.11 2,829 5/5/2016
0.9.10.7 2,762 4/29/2016
0.9.10.6 2,575 4/12/2016
0.9.10.5 2,641 4/5/2016
0.9.10.4 2,496 3/31/2016
0.9.10.3 2,626 3/23/2016
0.9.10.2 2,745 3/21/2016
0.9.10.1 2,649 3/21/2016
0.9.10 2,819 3/11/2016
0.9.9.3 2,897 3/1/2016
0.9.9.2 2,545 3/1/2016
0.9.9.1 2,856 2/28/2016
0.9.9 2,713 2/25/2016
0.9.8.2 2,587 2/19/2016
0.9.8.1 2,535 2/5/2016
0.9.8 2,544 2/4/2016
0.9.7.1 2,550 1/29/2016
0.9.7 2,452 1/28/2016
0.9.6 2,505 1/24/2016
0.9.5.2 2,538 1/21/2016
0.9.5.1 2,499 1/20/2016
0.9.5 2,659 1/20/2016
0.9.4.1 3,213 1/14/2016
0.9.3 2,594 1/13/2016
0.9.2.3 2,579 1/9/2016
0.9.1 2,543 1/4/2016

1.1.0.0: New: SVGs are now valid image sources!  Fixed: Shape outlines are not always full thickness; Button.Clicked event requires double click to fire on Andriod.
1.0.1.3: Fix: Android renderers use Android SDK calls not supported by Gingerbread; PCL.Utils.ApplicationStorageExtensions not using correct directory;
1.0.1.2: Fix: Instantiation of popup, before App.MainPage set to Forms9Patch.RootPage, causes crash; iOS button text not always appearing; Fixed: Default padding not zero for Forms9Patch layouts (other than Frame); Changed: Forms9Patch.Frame is not longer obsolete; IPopup is public;
1.0.1.1: Fix: Crash on older versions of Windows; Change: IPopup is public;
1.0.0.0: Full UWP Support;
0.10.3.10: UWP Release;
0.10.3.5: Fixed: Android implementation of FormsGestures failing in Xamarin.Forms 2.4; Android implementation of popups not re-rendering correctly upon 3rd or 4th display;  Added: pre-alpha of the UWP implmentation of the following Forms9Patch elements: Image, ImageSource, AbsoluteLayout, ContentView, Frame, Grid, ManualLayout, RelativeLayout, StackLayout, ImageButton, MaterialButton, MaterialSegmentedControl, Segment, RootPage, ActivityIndicatorPopup, ModalPopup, PermissionPopup, Toast;  
0.10.3.4: Fixed: Size of last segment of MaterialSegmentedController does not always match other segments; iOS intermittantcrash when Image is disposed;
0.10.3.3: Fixed: IconImage dissappears after pressing Android rendering of ImageButton; Some MultiResourceImages are not fitted properly on Android;
0.10.3.2: Fixed: ImageButton does not return to default state after selected; ImageButton triggers Tapped event twice;
0.10.3.1: Fixed: ImageButton crashes when ImageButtonState properties (DefaultState, PressedState, etc) are not set.
0.10.3.0: ImageButton, MaterialButton and MaterialSegmentedControl has been enhanced with HorizontalTextAlignment and VerticalTextAlignment properties.  MaterialSegmentedControl also has IntraSegmentSpacing and IntraSegmentOrientation properties; Obsolete: ImageButton, MaterialButton and MaterialSegmentedControl Alignment property; Fix: Potential crash when deconstructing Image elements.
0.10.2.16: Fixed: iOS rendering of images and fonts in XAML Previewers; Presentation of popups with modal pages.
0.10.2.13: Fixed multiple edge case rendering issues with Label.
0.10.2.12: Changed: PCL Profile from 259 to 111.  Fixed: ImageSource does not open Embedded Resource image when used in a library.
0.10.2.11: Fixed: (Android) Back button causes app to exit.
0.10.2.10: Fixed: Android Label not rendering in Xamarin.Studio's XAML Previewer;
0.10.2.9: Fixed: Fit=LabelFit.Lines not working when truncating on iOS; Modified: Buttons now default to Fit=LabelFit.Width and Padding=4;
0.10.2.8: Added the SelectedBackgroundColor and SelectedFontColor properties to MaterialButton and MaterialSegmentedControl
0.10.2.7: Fixed: Failure to dynamically resize Label when text changes.
0.10.2.6: Fixed: ImageButton not returned to full opacity when IsEnabled is programically set to true;
0.10.2.5: Fixed: bound values of ImageButtonState properties are not used on initialization.
0.10.2.4: Added: TintImage property to MaterialButton and MaterialSegmentedController to control if ImageSource image is tinted with FontColor;
0.10.2.3: Fixed: Unable to select portion of Xamarin.Forms.ListView cell that is covered by Forms9Patch.Label; Android Forms9Patch.Label not always updating correctly when BindingContext has changed; Added: ApplicationInfoService to get application's Name, Bundle/Package Identifier, Build number, and Version name;
0.10.2.2: Fix: ability to listen to gestures on Forms9Patch elements; Fix: RootPage responds correctly to changes in iOS status bar; Added: ColorGradientBox element;
0.10.2.1: Fix: Intermittant crash on Android when releasing layouts.
0.10.2.0: Now fully supports Shared Library apps.  Apparently, it did all along *except* for Embedded Resource fonts.  Now that has been fixed.
0.10.1.0: Added support for <a> tag to HtmlText property of Label; Added HapticsMode and HapticsEffect properties to buttons;
0.10.0.1: Fix: failure to use some Forms9Patch properties in XAML ResourceDictionary
0.10.0.0: Optimized for rendering speed; fix: Bubble popup not appearing with MasterDetailPage; fix: BubblePopup not responding to Margin property; Added Toast, BubbleToast;
0.9.13.5: Fix: Crash from Label object being instantiated and held a period without being rendered.
0.9.13.4: Fix: iOS FormsGestures library Panning event proides erratic results.
0.9.13.3: Fix: Android Label's Lines property does not truncate when LineBreakMode is not Start, Mid, or Center; Added: ActualFontSize readonly property to Label to give access to fit adjusted font size.
0.9.13.2: New: Added IsElliptical property to MaterialButton and the layout elements; Enabled the Opacity property of Image element.
0.9.13.1: New: Added CancelOnBackgroundTouch Property (default: true) to ModalPopup and BubblePopup
0.9.13.0: New: CustomFontEffect platform effect can be applied to Xamarin.Forms Label, Button, Entry, and Editor elements to allow the EmbeddedResourceID of PCL Embedded Resource fonts as value for FontFamily property.
0.9.12.5: Fixed: ImageButton in ContentView fails to correctly render state changes in BackgroundImage (Android).
0.9.12.4: Fixed: resizing of button labels when text is changed.
Enhanced: Forms9Patch.ImageSource.FromMultiResource uses first portion of path of Embedded Resource to determine which assembly to search.
Changed: Lines property of Label sets the max number of lines when Fit=LabelFit.None.
0.9.12.2: Fixed: (1) crash when render Label in Horizontal Orientation in StackLayout; (2) Failure to render Label in some layouts; (3) Failure to autofit some one-character labels correctly; (4) Failure to resize label when bounds changes; Enhanced: Can refer to iOS system fonts by using their name as value for FontFamily property.
0.9.12.2: Fixed: (1) crash when instantiating buttons on iOS release builds; (2) iOS HtmlText <tt> tag combined with <b>, <u>, or <i> fails to render font correctly; (3) Image button touch intermittantly fails.
Enhanced: Width and Height values of LabelFit are now supported for labels with unimposed Height.
0.9.12.1: Fixed: (1) failure to get bold and/or italic version of some iOS system fonts; (2) Multi-line labels not appearing so on iOS; (3) 9Patch images market to edge failing to render on iOS;
0.9.12.0: New: Width and Lines Autofit for Labels.  TrailingImage property for ImageButton, MaterialButton and MaterialSegmentedController. Forms9Patch.FontExtensions.LoadedFontFamilies() lists all currently loaded fonts.
Fixed: iOS HtmlMarkup underlines don't match font color, Default Android image button label missing for some states.  Unable to bind to Segment.  Able to unselect Segment when in Radio mode.
0.9.11.2: Fixed: in iOS, Images will have height or width of 1 (instead defaulting to source image height or width) when HeightRequest or WidthRequest is not set.
0.9.11.1: Fixed: Issue where Forms9Patch.iOS.Settings.LicenseKey throws System.NullRefernceException.
0.9.11.0: Added HTML markup to Label, MaterialButton, Segment, and ImageButtonState elements.
0.9.10.7: Built for Xamain Forms 2.2
0.9.10.6: Fixed crash when no Target is given for BubblePopup.  Fixed failure to present popups when used w/ PushModalAsync().
0.9.10.4: Added Cancel method to Popups; Auto-cancel Popups when Android [back] button is pressed.
0.9.10.3: Improved reliabilty of rendering of 9patch backgrounds when used in ListView in Android.
0.9.10.2: Fixed AOT issue that caused BubblePopup not to work on iOS devices.
0.9.10.1: Fixed layout of NinePatch backgrounds when used in a ListView on Android.
0.9.10.0: Added ModalPopup and BubblePopup elements.  See demo app for example.
0.9.9.3: 25x Improved tap response on all buttons; Fixed ImageButton.Background rendering issue.
0.9.9.2: 3x Improved iOS image loading time.  Known issue: ImageButton Fails to present anything but DefaultState.BackgroundImage - will be fixed very soon.
0.9.9.1: Fixed issue with comping for iOS devices.
0.9.9.0: Added:
(1) PressingState to ImageButton to enable customization of the button for when it is in the pressed state.
(2) LongPressing and LongPressed events have been added to the ImageButton, MaterialButton, and Segment element.
(3) SegmentLongPressing and SegmentLongPressed events have been added to the MaterialSegmentedControl element.
(4) Renamed ImageButton's Clicked event to Tapped.
0.9.8.2: Fixed not all XAML attributes working for ImageButtonState.
0.9.8.1: Fixed:  XAML Segments Attribute for MaterialSegmentButton; Added FontColor and FontAttributes properties to Segment
0.9.8.0+ Added MaterialSegmentControl, Added Orientation property to MaterialButton
0.9.7.1 Fixed: MaterialButton render when image but no text present.
0.9.7.0 Added ImageButton and MaterialButton elements, Added HasShadow property to Android and iOS AbsoluteLayout, Frame, Grid, RelativeLayout, and StackLayout layouts.
0.9.6.0 Fixed intermittant iOS UIImage.ImageWithData double free, Added RelativeLayout, Grid, and AbsoluteLayout Elements
0.9.5.2 Fixed ContentView background scalable image rendered as non-scalable image if CapsInset has a one or two -1 values
0.9.5.1 Fixed scaling of ContentView BackgroundImage
0.9.5 1) Added Fill (AspectFill, AspectFit, Fill and Tile) property to Image; 2) Added ContentView and Frame elements with BackgroundView and (for Frame) OutlineWidth and OutlineRadius properties
0.9.4 Bug fix Correct resizing when iOS screen orientation changes
0.9.3 fix race condition during debug where iOS Renderer releases Element before releasing renderer.
0.9.2 Bug fix for not properly scaling when parent space is smaller than base image but larger than base image less complaint portion.
0.9.1 beta release
0.9.1 fix: scaling of scalable images larger than parent space